在azure vm windows服务器上自托管wcf服务

时间:2014-12-16 09:46:45

标签: c# wcf azure windows-server-2012 self-hosting

我有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>

3 个答案:

答案 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)。