为 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 端点地址 net.tcp 而不是 http