简单的Wcf服务导致没有端点异常

时间:2013-04-03 09:01:44

标签: c# wcf

我刚刚学习wcf,我尝试创建一个WCF服务,但我一直得到这个例外:

  

未处理的异常:System.ServiceModel.EndpointNotFoundException:没有    端点侦听http://localhost:8733/Person/,可以接受该消息   GE。这通常是由错误的地址或SOAP操作引起的。见InnerExcept   离子,如果存在,更多细节。 ---> System.Net.WebException:无法连接   ct到远程服务器---> System.Net.Sockets.SocketException:没有连接c   应该是因为目标机器主动拒绝它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" />

我的解决方案还包含另一个包含数据的项目,我使用Entity Framework获得了该数据。我不知道这是否与问题有关。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

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

&#34;未处理的异常:System.ServiceModel.EndpointNotFoundException:http://localhost:8733/Person/没有可以接受消息的端点监听。这通常是由错误的地址或SOAP操作引起的。有关详细信息,请参阅InnerExcept ion(如果存在)。 ---&GT; System.Net.WebException:无法连接到远程服务器---&gt; System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它127.0.0.1:8733"

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

答案 1 :(得分:0)

而不是&#39; localhost&#39;在url中使用端点的ip地址。