【问题标题】:WCF host address questionWCF 主机地址问题
【发布时间】:2010-04-09 06:22:38
【问题描述】:

当我在 Web 服务器上设置 wcf 服务时,我将端点地址设置为

<endpoint address="http://www.mydomin.com/clientname/happy.svc" 
              binding="basicHttpBinding" 
              name="happysvcbasic" 
              contract="happysvc.Ihappysvc">

</endpoint>

但是当在浏览器上输入上述地址时,我得到一个不同的主机名,这是内部服务器名称,例如,

要测试此服务,您需要创建一个客户端并使用它来调用该服务。您可以使用命令行中的 svcutil.exe 工具执行此操作,语法如下:

svcutil.exe http://internalservername.domain/clientname/happy.svc?wsdl

我尝试添加主机/基本地址标签,但没有任何区别,我错过了什么?谢谢你的帮助。

【问题讨论】:

    标签: wcf


    【解决方案1】:

    当您通过 IIS 托管您在 IIS 中的服务时,地址始终是相对的。假设您想通过端点实现某些目标,请删除 http://

       <endpoint address="clientname" 
    

    然后您的端点将是 http://localhost/virtualdirectory/happy.svc/clientname

    用于公开多个端点时,因为每个端点必须有一个唯一的地址。

    SeeThis 了解更多信息。

    如果您尝试为您的服务设置不同的 dns 地址,则需要更改托管网站的方式并使用host headers

    【讨论】:

    • 你是对的。我在 iis/binding 中设置了主机头,一切都很好。谢谢
    【解决方案2】:

    当您在 IIS 中托管 WCF 服务时,您无法选择地址,因此在您的 &lt;endpoint&gt; 中设置 address= 绝对没有用,设置基地址也是如此。

    在 IIS 中托管时,确定 WCF 服务地址的唯一因素是:

    • IIS 服务器机器名称/IP 地址,可能还有端口号
    • happy.svc 文件所在的虚拟目录和可能的任何子目录
    • *.svc 文件本身的名称,包括 .svc 扩展名

    因此您的 WCF 服务地址将类似于:

    http://yourserver:80/VirtualDirectory/SubDirectory/happy.svc
    

    仅此而已,您无法更改(至少现在不会,在 WCF 3.5 中 - 在 .NET 4 中的 WCF 中可能会有所不同)。

    那么现在:你的问题是什么,真的吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 2012-01-14
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 2020-08-05
      相关资源
      最近更新 更多