使用公共IP部署WCF服务

时间:2014-03-19 10:48:27

标签: wcf iis-7.5

我创建了一个必须可以在互联网上访问的WCF应用程序。 我在带有IIS的WS2008 R2服务器上部署了此应用程序。此服务器具有专用IP,但我在端口35000上配置NAT重定向。

当我在网络浏览器上放置正确的URI(使用公共IP)时,我可以正确显示服务页面,但IIS生成的链接显示WSDL不正确,我有服务器名称而不是像这样的公共IP :

http://serverName:35000/ServiceName.svc?wsdl

而不是

http://publicIP:35000/ServiceName.svc?wsdl 

所以当我点击链接时,服务器名称无法解析。

在我的web.config文件中,我添加了一个具有正确IP的端点,我还尝试使用公共IP添加身份标记和DNS标记,但它不起作用。

这是我的web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="myNamespace.ServiceName.svc">
        <endpoint address="http://xxx.xxx.xxx.xxx:35000/myNamespace/ServiceName/" binding="wsHttpBinding" contract="myNamespace.IServiceName">
          <identity>
            <dns value="xxx.xxx.xxx.xxx" />
          </identity>
        </endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

这是WSDL的结束:

<wsdl:service name="ServiceName">
  <wsdl:port name="BasicHttpBinding_IServiceName" binding="tns:BasicHttpBinding_IServiceName">
<soap:address location="http://serverName:35000/ServiceName.svc"/>
</wsdl:port>
</wsdl:service>

我也尝试在IIS中添加公共IP作为主机名但我收到错误。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

解决方案是添加mex端点:

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

它完美无缺......