none
WCF 多域名绑定一直出错 RRS feed

  • 问题

  • Windows2003 + IIS 6 + .Net 3.5 sp1

     在本地上测试一切OK。

    已知虚拟空间绑定了两个域名。 

    移到虚拟空间服务器上出现如上错误提示。

    在web.config上加了以下代码:
    <serviceHostingEnvironment>
        <baseAddressPrefixFilters>
            <add prefix="http://www.xxx.com"/>
        </baseAddressPrefixFilters>
    </serviceHostingEnvironment>


    刚上传web.config时,运行正常,过一会就不行,出现以下错误。重新上传web.config又正常,过会又不行。如此反复。


    “/”应用程序中的服务器错误。


    此集合已经包含方案 http 的地址。此集合中每个方案中最多只能包含一个地址。
    参数名: item

     

    堆栈跟踪:

    [ArgumentException: 此集合已经包含方案 http 的地址。此集合中每个方案中最多只能包含一个地址。
    参数名: item]
       System.ServiceModel.UriSchemeKeyedCollection.InsertItem(Int32 index, Uri item) +4564833
       System.Collections.Generic.SynchronizedCollection`1.Add(T item) +56
       System.ServiceModel.UriSchemeKeyedCollection..ctor(Uri[] addresses) +120
       System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses) +145
       System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(Type serviceType, Uri[] baseAddresses) +28
       System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses) +323
       System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath) +516
       System.ServiceModel.HostingManager.Ac

    然后在
    2009年5月22日 8:37

答案

  • Hi,
     1. 你的基地址筛选器配置是不是不对.我查看了文档感觉你的配置过于宽泛。
    <serviceHostingEnvironment>
        <baseAddressPrefixFilters>
            <add prefix="http://www.xxx.com"/这个筛选器地址不唯一,限制不够严格。
        </baseAddressPrefixFilters>
    </serviceHostingEnvironment>
       默认情况下,未指定前缀时,将传递所有地址。而指定前缀后,将只允许传递该方案的匹配基址。
    2.站点承载的 WCF 服务只允许绑定到每个方案的一个基址。筛选器的目的是为了避免一个WCF服务程序拥有多个基地址,筛选器过滤会过滤其它不匹配的地址,所以你的配置可以修改一下。
      比如把节点修改一下,例如:
                 <add prefix=”http://www.xxx.com:9000”/>
       其它的信息可以参考MSDN关于筛选器节点的配置介绍:http://msdn.microsoft.com/zh-cn/vcsharp/bb924481.aspx。讲解的比较详细,应该对你的配置帮助作用~>//
    you have a dream,you gonna protect it! http://www.cnblogs.com/frank_xl
    2009年5月24日 4:00
    版主