gpt4 book ai didi

c# - 在本地计算机上使用 WCF 获取错误 "This collection already contains an address with scheme http"

转载 作者:行者123 更新时间:2023-11-30 17:09:39 26 4
gpt4 key购买 nike

我是第一次尝试 WCF,当我尝试实例化主机时出现以下错误:

这个集合已经包含一个方案为 http... 的地址

我发现了很多其他对此的引用,并尝试了一些解决方案无济于事。一个不适用于我的相当普遍的线索是问题出在某种网络服务器上。我只是在本地计算机上运行所有内容。

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

基于这个解决方案: How to solve "The ChannelDispatcher is unable to open its IChannelListener" error?

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

ServiceContract 非常简单:

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

我像这样实例化服务:

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

其中 SSAService 是服务接口(interface)的实现。

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

        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”来解决问题。参数名称:项目

我通过对我的 web.config 执行以下操作解决了这个问题。也许 .NET Framework 4 中发生了一些变化,需要这一行,因为我以前不需要它:

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

<system.serviceModel>

关于c# - 在本地计算机上使用 WCF 获取错误 "This collection already contains an address with scheme http",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12790756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com