我正在尝试在IIS上托管WCF Web服务,但是当我导航到虚拟svc文件时,我分别收到以下参数和服务激活异常:
此集合已包含方案http的地址。那里 在这个集合中,每个方案最多只能有一个地址...
由于异常,无法激活服务'/SidService.svc' 在编译期间。异常消息是:此集合已经存在 包含一个方案http。
的地址
我可以使用IIS express在本地运行它并成功导航到svc文件。当项目部署到运行IIS 7.5的服务器时,问题就出现了。
我正在使用声明性语法来配置Web服务,因此没有以编程方式配置任何内容。
<system.serviceModel>
<services>
<service name="Services.SidManager"
behaviorConfiguration="SidManagerBehavior">
<endpoint address=""
binding="wsHttpBinding"
contract="Contracts.ISidService"
bindingConfiguration="wsHttpBindingConfig"/>
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="wsHttpBindingConfig" maxReceivedMessageSize="200000">
<reliableSession enabled="true"/>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="SidManagerBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceThrottling maxConcurrentSessions="100"
maxConcurrentCalls="16"
maxConcurrentInstances="116"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment>
<serviceActivations>
<add service="Services.SidManager"
relativeAddress="SidService.svc" />
</serviceActivations>
</serviceHostingEnvironment>
</system.serviceModel>
部分错误消息建议将multipleSiteBindingsEnabled属性设置为true,但启用多个站点绑定不成功。
另外,我只使用wsHttpBinding甚至需要启用多个站点绑定或者有多个基地址前缀过滤器?
我需要为IIS 7.5使用不同的配置吗?
答案 0 :(得分:0)
经过进一步研究,我能够确定IIS有两个绑定。将<baseAddressPrefixFilters>
元素添加到<serviceHostingEnvironment>
,解决了问题。
我在MSDN的论坛上找到了thread,帮助我解决了问题。
这是我实施的代码:
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="http://subdomain.domain.name:port/"/>
</baseAddressPrefixFilters>
...
</serviceHostingEnvironment>