0

我在这里学习 WCF http://msdn.microsoft.com/ru-ru/library/bb386386.aspx并且我成功地完成了测试服务步骤。但是在访问服务步骤中我遇到了问题。它构建时没有任何错误,但是当我尝试将 smth 写入 textLabel 空间并按下 button1 时,我在 button1_Click 函数中得到错误,即 ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();

错误信息

在服务模型客户端配置部分中找不到引用合同 >'ServiceReference1.IService1' 的默认端点元素。这可能是因为没有为您的应用程序找到配置文件>>,或者因为在客户端元素中找不到与此合同匹配的端点元素。

我在 app.project 文件中找到了这样的代码

<endpoint address="http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary1/Service1/"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService11"
            contract="ServiceReference1.IService1" name="BasicHttpBinding_IService11" />

我 100% 确定,该代码没有任何错误,因为我从上面的站点复制了它,没有进行任何修改。所以我很高兴听到你的假设如何解决这个问题。

4

1 回答 1

2

您应该name在构建客户端时指定端点的:

using (var client = new ServiceReference1.Service1Client("BasicHttpBinding_IService11"))
{
    client.SomeMethod();
}

或者*在配置文件中只有一个端点时使用:

using (var client = new ServiceReference1.Service1Client("*"))
{
    client.SomeMethod();
}

您需要指定名称的原因是因为您可以在配置文件中为同一服务有多个端点(例如具有不同的绑定),如果您不指定名称,框架将不知道您要调用哪个端点.

另请注意,我如何将IDisposable客户包装在一份using声明中,以确保在您完成使用后妥善处理。

于 2013-04-07T16:52:02.833 回答