我有ucp绑定的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>
对于localhost一切正常......我是新手(天蓝色,Windows服务器部署),我在stackoverflow或其他任何地方尝试了很多想法。但仍然无法正常工作。
有什么想法吗?
EDIT1:
<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>
答案 0 :(得分:0)
尝试将Azure VM端点公共端口从39901更改为443!
很多系统管理员和ISP阻止所有传出端口,只允许少数(传出端口白名单)。端口80和443通常从不被阻止,因为它通常是HTTP流量。
仅更改VM端点的公共端口。保留私有端口 - 39901。
答案 1 :(得分:0)
您的配置文件似乎有一些问题:
服务行为缺少名称:
<serviceBehaviors>
<behavior name="my.service.behavior"> ...
服务需要反映绑定配置
<service name="ServerService.UdpServiceAlpha" behaviorConfiguration=" my.service.behavior ">
答案 2 :(得分:0)
是的,最后......得到了解决方案。我的朋友(网络大老板:))告诉我端口通信是如何工作的......想法很简单:&#34;再次检查服务器和客户端防火墙端口&#34;,这就是那个点&#34;客户端防火墙&# 34。
我只允许服务器防火墙端口,但应允许客户端进行通信。在客户端PC中添加了TCP / UDP出站规则,它可以神奇地工作。
...对于UDP我需要更改TTL(默认为1)。