我第一次尝试 WCF 并在尝试实例化主机时收到以下错误:
该集合已经包含一个带有 http 方案的地址...
我发现了很多其他对此的引用,并尝试了一些解决方案无济于事。一个不适用于我的相当常见的线程是问题出在某种网络服务器上。我只是从我的本地机器上运行所有东西。
我发现一个有趣的症状是我正在开发 ac# Forms 应用程序。最初我的顶级表单对象继承了我的服务接口而不是单独的服务类。当我以这种方式实现时,主机端没有错误,但客户端却遇到了麻烦。
基于此解决方案: 如何解决“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 是我的顶级表单类...
然后我遇到了一个客户端问题,这就是我开始的地方......
我尝试更改端口号,但这似乎没有任何影响。
我是 WCF 的新手,所以也许我遗漏了一些明显的东西。
谢谢。