我刚刚学习 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" />
我的解决方案还包含另一个项目,其中包含我使用实体框架获得的数据。我不知道这是否与问题有关。
我在这里做错了什么?