Azure VM Windows 服务器上的自承载 WCF 服务

本文关键字:WCF 服务 VM Windows 服务器 Azure | 更新日期: 2023-09-27 18:34:28

我有带有udp绑定的wcf服务(WCF 4.5中的新功能(,我正在尝试将其托管在Azure上的Windows Server 2012上。

我在 Azure 上为我需要的端口(39901;它适用于 HTTP:80,我可以看到 IIS 网站(进行了终结点映射,并且我允许此端口防火墙中的所有流量。但是我仍然无法在网络浏览器中获取 wsdl。

下面是控制台应用程序的 app.config:

<configuration>
<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.serviceModel>
    <behaviors>
        <serviceBehaviors>
            <behavior>
                <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="true" />
                <serviceThrottling maxConcurrentCalls="12" maxConcurrentInstances="56" maxConcurrentSessions="12" />
                <useRequestHeadersForMetadataAddress></useRequestHeadersForMetadataAddress>
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <services>
        <service name="ServerService.UdpServiceAlpha">
            <endpoint address="soap.udp://localhost:8091" binding="udpBinding" contract="ServerService.IUdpServiceAlpha" />
            <host>
                <baseAddresses>
                    <add baseAddress="http://localhost:39901/SelfServerHost/" />
                </baseAddresses>
            </host>
        </service>
    </services>
    <protocolMapping>
        <add binding="udpBinding" scheme="soap.udp" />
    </protocolMapping>
    <bindings>
    </bindings>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
</configuration>

对于本地主机,一切正常...我是这方面的新手(Azure,Windows服务器部署(,我在stackoverflow或其他任何地方尝试了很多想法。但仍然不起作用。

知道吗?

编辑1:

<services>
        <service name="ServerService.UdpServiceAlpha" behaviorConfiguration="UdpServiceAlpha.Behavior">
            <endpoint address="/" binding="udpBinding" contract="ServerService.IUdpServiceAlpha"/>
            <endpoint address="/" binding="webHttpBinding" contract="ServerService.IUdpServiceAlpha"/>
            <host>
                <baseAddresses>
                    <add baseAddress="http://xxx.cloudapp.net:39901/SelfServerHost/" />
                    <add baseAddress="soap.udp://xxx.cloudapp.net:39901/SelfServerHost/" />
                </baseAddresses>
            </host>
        </service>
    </services>

Azure VM Windows 服务器上的自承载 WCF 服务

尝试将 Azure VM 终结点公共端口从 39901 更改为 443!

很多系统管理员和ISP阻止所有传出端口,并且只允许少数(传出端口白名单(。端口 80 和 443 通常永远不会被阻止,因为它通常是 HTTP 流量。

仅更改 VM 终结点的公共端口。将专用端口保留原样 - 39901。

您的配置文件似乎有几个问题:

服务行为缺少名称:

  <serviceBehaviors>
        <behavior name="my.service.behavior"> ...

服务需要反映绑定配置

<service name="ServerService.UdpServiceAlpha" behaviorConfiguration=" my.service.behavior ">

是的,终于...为此找到了解决方案。我的朋友(网络大老板:)(告诉我端口通信是如何工作的......想法很简单:"再次检查服务器和客户端防火墙端口",这就是"客户端防火墙"。

我只允许服务器防火墙端口,但应该允许客户端通信。在客户端PC中添加了TCP/UDP出站规则,它可以神奇地工作。

。对于 UDP,我需要更改 TTL(默认值为 1(。