如何将WCF服务绑定到IP地址

时间:2009-08-03 06:35:46

标签: c# .net visual-studio-2008 wcf

我正在使用VSTS2008 + C#+ .Net 3.5开发由IIS托管的WCF服务。我发现当使用Add Service Reference ...从客户端引用服务时,客户端必须能够将机器名称解析为IP地址,因为WSDL按机器名称引用某些模式文件。下面是WSDL文件的一部分示例,为了从客户端解析WSDL文件以生成代理,我们必须能够将机器名testmachine1解析为相关的IP地址,

<xsd:import schemaLocation="http://testmachine1/service.svc?xsd=xsd1" 
     namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>

我的问题是,由于某种原因,机器名称无法一直解析(出于非技术原因),所以我想绑定到托管IIS服务器的IP地址。可能吗?如果是,请欣赏,如果有人可以提供建议。这是我当前的WCF web.config文件,我想知道如何修改它以使其能够使用IP地址,

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="Foo.WCF.ServiceBehavior"
        name="Foo.WCF.CustomerManagement">
        <endpoint address="" binding="basicHttpBinding" 
                  contract="Foo.WCF.ICustomerManagement">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" 
                  contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="Foo.WCF.ServiceBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>
提前谢谢, 乔治

2 个答案:

答案 0 :(得分:2)

如果您的WCF服务托管在IIS中,则无法设置单独的地址。您必须使用SVC文件所在的虚拟目录的URL - 使用计算机名称(http://yourserver/virtualdir/myservice.svc)或IP(http://123.123.123.123/virtualdir/myservice.svc)。

如果您使用IP添加服务引用,那么该IP将在服务导入生成的WSDL中使用。

如果您自己托管WCF服务(Windows服务,控制台应用程序),则可以在config中设置服务地址,并为计算机使用计算机名称或IP。

马克

答案 1 :(得分:1)

我遇到同样的问题并在寻找自己问题的答案时看到了你的帖子。

我想我可能找到了一个解决方案,即将IIS站点绑定更改为ip的绑定。我仍然不明白为什么这不能成为.config文件中的设置。

以下是我找到的解决方案的链接(http://blogs.msdn.com/wenlong/archive/2007/08/02/how-to-change-hostname-in-wsdl-of-an-iis-hosted-service.aspx)。

以下是关于我的问题(.NET WCF service references use server name rather than IP address causing issues when consuming)的帖子的链接。

以下是我的帖子中有关查找解决方案的链接(WCF (hosting service in IIS) - machine name automattically being picked up by WCF rather than IP?)。