![](/img/trans.png)
[英]WCF Web.config Error : “This collection already contains an address with scheme http”
[英]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.