WCF 3.5 服务和多个 http 绑定

Posted

技术标签:

【中文标题】WCF 3.5 服务和多个 http 绑定【英文标题】:WCF 3.5 Service and multiple http bindings 【发布时间】:2011-02-08 05:23:11 【问题描述】:

我的 WCF 服务无法使用多个 http 绑定。

在 IIS 7 中,我必须在以下位置绑定 http:/service 和 http:/service.test 端口 80。

在我的web.config 中,我添加了 baseAddressPrefixFilters 但我无法添加 不止一个

<serviceHostingEnvironment>
    <baseAddressPrefixFilters>
        <add prefix="http://service"/>
        <add prefix="http://service.test"/>
    </baseAddressPrefixFilters>
</serviceHostingEnvironment>

这给出了几乎相同的错误

这个集合已经包含一个带有 http 方案的地址。那里 此集合中的每个方案最多可以是一个地址。

好像根本没有指定文件管理器(这个集合已经包含一个 带有方案 http 的地址。每个方案最多可以有一个地址 这个集合。 参数名称:item)

如果我只添加一个过滤器,那么服务可以工作,但只响应 添加过滤器地址。

我也尝试过指定多个端点,例如(并且只有一个过滤器):

<endpoint address="http://service.test" binding="basicHttpBinding" bindingConfiguration="" contract="IService" />
<endpoint address="http://service" binding="basicHttpBinding" bindingConfiguration="" contract="IService" /> 

那么仍然只有过滤器中指定的地址有效,其他 返回此错误:

应用程序“ISPSERVICE”中的服务器错误 HTTP 错误 400.0 - 错误的请求

问候 莫腾

【问题讨论】:

【参考方案1】:

前几天我试图将 WCF 服务部署到我的一个 Web 服务器,但遇到了问题。我不断收到以下错误消息:

这个集合已经包含一个带有 http 方案的地址。那里 此集合中的每个方案最多可以是一个地址。参数 名称:项目

问题并没有发生在我的本地计算机上,而是发生在网络服务器上,这使得找出导致它的原因有点困难。它发生在服务器上,因为我的 Web 服务器处于共享托管环境中,在这种情况下,WCF 服务也需要知道主机标头。为此,我在 web.config 中导航到 &lt;system.serviceModel&gt; 并添加了以下内容:

<serviceHostingEnvironment>
<baseAddressPrefixFilters>    
    <add prefix=http://MyHostHeader />
</baseAddressPrefixFilters>
</serviceHostingEnvironment>

【讨论】:

以上是关于WCF 3.5 服务和多个 http 绑定的主要内容,如果未能解决你的问题,请参考以下文章

WCF 服务上的多个绑定

WCF:单个服务的多个绑定配置

WCF 上的一项服务、多个端点、多个绑定。为啥我无法到达我的端点?

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

WCF net.tcp 绑定:托管多个服务是不是需要端口共享?

如何使用多个绑定将 WCF json 绑定到 https?