繁体   English   中英

获取错误“此集合已包含带有方案http的地址”,本地计算机上有WCF

[英]Getting Error “This collection already contains an address with scheme http” with WCF on local machine

我第一次尝试WCF并在尝试实例化主机时收到以下错误:

此集合已包含带有方案http的地址...

我已经找到了很多其他的参考资料,并尝试了一些解决方案无济于事。 一个相当常见的线程不适用于我,问题出在某种Web服务器上。 我只是在本地机器上运行所有东西。

我发现一个有趣的症状是我正在开发ac#Forms应用程序。 最初我的顶级表单对象继承了我的服务接口而不是单独的Service类。 当我以这种方式实现时,主机端没有错误,但我在客户端遇到了麻烦。

基于此解决方案: 如何解决“ChannelDispatcher无法打开其IChannelListener”错误?

...我决定将服务主机分成一个单独的对象。 那是我开始看到问题的时候。

ServiceContract很简单:

[ServiceContract]
public interface ISSAService
{
    [OperationContract]
    void CreateSpaMonitor();
}

我像这样实例化服务:

        Uri baseAddr = new Uri("http://localhost:8000/SSAService");
        ServiceHost localHost = new ServiceHost(typeof(SSAService), baseAddr);

其中SSAService是Service接口的实现。

如果我将第二行更改为以下(并实现接口...),则错误消失:

        Uri baseAddr = new Uri("http://localhost:8000/SSAService");
        ServiceHost localHost = new ServiceHost(typeof(SSAManager), baseAddr);

哪里SSAManager是我的顶级Forms类...

然后我遇到了客户端问题,这是我开始的地方....

我试过更改端口号,但似乎没有任何影响。

我是WCF的新手,所以也许我错过了一些明显的东西。

谢谢。

我收到了这个错误:

此集合已包含方案https的地址。 此集合中每个方案最多只能有一个地址。 如果您的服务是在IIS中托管的,则可以通过将'system.serviceModel / serviceHostingEnvironment / multipleSiteBindingsEnabled'设置为true或指定'system.serviceModel / serviceHostingEnvironment / baseAddressPrefixFilters'来解决问题。 参数名称:item

我通过对web.config执行以下操作来解决它。 可能在.NET Framework 4中发生了一些变化,这需要这一行,因为我以前不需要它:

<system.serviceModel>
      <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />           
    <!--  Rest of the system.serviceModel content omitted for brevity--->

<system.serviceModel>

我之前发现的解决方案之一是添加如下内容:

  <serviceHostingEnvironment>
    <baseAddressPrefixFilters>
      <add prefix="http://localhost:8000"/>
    </baseAddressPrefixFilters>
  </serviceHostingEnvironment>

然后绝对指定端点地址。 这似乎没有效果,但我仍然在构造函数中使用baseAddr,如上所示。

我的解决方案是从构造函数中删除baseAddr。

如果在具有不同域名/端口的同一IIS站点上有多个绑定,也会发生这种情况。 我通过删除额外的命名绑定来解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM