为 WCF 服务添加多个 HTTP 基地址

Posted

技术标签:

【中文标题】为 WCF 服务添加多个 HTTP 基地址【英文标题】:Adding multiple HTTP base addresses for WCF service 【发布时间】:2012-01-28 07:35:14 【问题描述】:

我在 IIS 7.5 中设置了一个 MSCRM 网站,其中我在绑定下配置了以下主机标头: 1)客户关系管理 2)crm.mydomain.com

我正在尝试访问 OrganizationData.svc。我已将以下配置添加到 CRMWeb 应用程序的 Web.config

   <serviceHostingEnvironment>   
    <baseAddressPrefixFilters>   
       <add prefix="http://crm/"/>   
   </baseAddressPrefixFilters>   
  </serviceHostingEnvironment>

如果我使用以下 URL 访问服务,这将有效:http://crm/MSCRMDEV/XRMServices/2011/OrganizationData.svc/ 但如果我使用 FQDN http://crm.mydomain.com/MSCRMDEV/XRMServices/2011/OrganizationData.svc/ 则它不起作用

我尝试在配置中添加“http://crm.mydomain.com/”作为另一个前缀,就在我为“http://crm/”添加的条目下方,但 WCF 抛出以下错误:

这个集合已经包含一个带有 http 方案的地址。此集合中的每个方案最多可以有一个地址。如果您的服务托管在 IIS 中,您可以通过将“system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled”设置为 true 或指定“system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters”来解决问题。

我遵循了here 的建议并添加了 multiplesitebindings="true" 但这也没有帮助。我还查看了this 建议,但 CRM Web 应用程序的 Web.config 中没有节点,所以不确定是否可以在中添加此部分

这可以实现吗。根据我的阅读,WCF 在处理多个 http 主机标头(在 IIS 绑定中添加)时遇到问题。

【问题讨论】:

不,一个给定的“方案”(http、net.tcp)不能有多个基地址——只有一个。 【参考方案1】:

不支持为一个方案分配多个绑定。请参阅http://technet.microsoft.com/en-us/library/hh237635.aspx(也适用于非 IFD 环境)

网站应该有一个单一的绑定。运行 Microsoft Dynamics CRM 时不支持多个 IIS 绑定,例如具有 HTTPS 和 HTTP 绑定或两个 HTTPS 或两个 HTTP 绑定的网站。

【讨论】:

有趣。这使得当您从不同的域调用服务时,几乎不可能使用其 FQDN 调用服务。 谢谢,你为我节省了很多时间!

以上是关于为 WCF 服务添加多个 HTTP 基地址的主要内容,如果未能解决你的问题,请参考以下文章

wcf服务元数据WSDL中的地址为请求方地址不再是主机名

天蓝色服务结构 wcf 端点地址 net.tcp 而不是 http

如何在 WCF 中修复“找不到与架构 http 匹配的基地址”...

绛河 初识WCF5

WCF 3.5 服务和多个 http 绑定

WCF 异常:找不到与端点的方案 http 匹配的基地址