我创建了一个必须可以在互联网上访问的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作为主机名但我收到错误。
感谢您的帮助
答案 0 :(得分:0)
解决方案是添加mex端点:
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
它完美无缺......