0

我刚刚学习 wcf 并尝试创建 WCF 服务,但我不断收到此异常:

未处理的异常:System.ServiceModel.EndpointNotFoundException:没有http://localhost:8733/Person/可以接受消息的端点监听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException 离子(如果存在)。---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection can ould be because the target machine主动拒绝它 127.0.0.1:8733

我首先创建了一个 WCF 服务库。我在这里定义了我的服务合同和数据合同。并配置了端点女巫,如下所示:

<service name="SelfHosting.PersonContract">
    <endpoint address="" binding="basicHttpBinding" contract="SelfHosting.IPersonContract">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8733/Person/" />
      </baseAddresses>
    </host>
  </service>

这两个端点已经添加,我只是将它们配置为我的需要。我不确定 mex 端点的用途,所以我希望有人能告诉我。

然后我创建了一个控制台应用程序并添加了对该服务的引用。我已经初始化了一个服务实例,然后我尝试调用它:

static PersonContractClient client = new PersonContractClient();

static void Main(string[] args)
{
        var persons = client.GetPersons();
        foreach (var personData in persons)
        {
            Console.WriteLine(personData.Name);
            Console.WriteLine(personData.Email);
        }
    }

我没有在客户端上设置任何端点,因为据我所知,当您添加对服务的引用时它们会自动添加。这是在我添加引用之后添加的:

 <endpoint address="http://localhost:8733/Person/" binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_IPersonContract" contract="PersonNamespace.IPersonContract"
            name="BasicHttpBinding_IPersonContract" />

我的解决方案还包含另一个项目,其中包含我使用实体框架获得的数据。我不知道这是否与问题有关。

我在这里做错了什么?

4

2 回答 2

0

当我尝试在控制台应用程序中使用自主机创建双工 wcf 通信时,我遇到了类似的问题。按照这个例子http://adamprescott.net/2012/08/15/a-simple-wcf-service-callback-example/说清楚了。得到错误是很常见的

“未处理的异常:System.ServiceModel.EndpointNotFoundException:在http://localhost:8733/Person/处没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的。请参阅 InnerException,如果---> System.Net.WebException: 无法连接到远程服务器 ---> System.Net.Sockets.SocketException: 无法建立连接,因为目标机器主动拒绝了它 127.0 .0.1:8733"

在尝试在客户端控制台应用程序中发现服务引用之前,您需要通过右键单击文件夹位置中的 .exe 来启动服务的可执行文件 (.exe) > 复制服务 app.config 中基地址中的 uri并粘贴在添加服务引用对话框中,然后单击确定...修复它。我希望这对其他人有所帮助,因为这个问题有点老了。

于 2015-12-06T00:45:11.920 回答
0

使用端点的 IP 地址代替 url 中的“localhost”。

于 2016-04-19T17:38:35.823 回答