在IIS上托管WCF Web服务在导航到SVC文件时会引发参数异常

时间:2018-04-03 16:17:48

标签: wcf iis-7.5 iis-express

我正在尝试在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使用不同的配置吗?

1 个答案:

答案 0 :(得分:0)

经过进一步研究,我能够确定IIS有两个绑定。将<baseAddressPrefixFilters>元素添加到<serviceHostingEnvironment>,解决了问题。 我在MSDN的论坛上找到了thread,帮助我解决了问题。

这是我实施的代码:

<serviceHostingEnvironment>
    <baseAddressPrefixFilters>
        <add prefix="http://subdomain.domain.name:port/"/>
    </baseAddressPrefixFilters>

    ...

</serviceHostingEnvironment>