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 终结点公共端口从 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(。