【问题标题】:Creating and Accessing WCF Services. Visual studio 2012 gives error创建和访问 WCF 服务。 Visual Studio 2012 出现错误
【发布时间】:2013-04-07 12:56:01
【问题描述】:

我在这里 http://msdn.microsoft.com/ru-ru/library/bb386386.aspx 学习 WCF,并且我成功地完成了 测试服务 步骤。但是在 访问服务 步骤中,我遇到了问题。它构建时没有任何错误,但是当我尝试将 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% 确定,该代码没有任何错误,因为我从上面的站点复制了它,没有进行任何修改。所以我很高兴听到你的假设如何解决这个问题。

【问题讨论】:

标签: c# wcf visual-studio-2012 msdn


【解决方案1】:

在构造客户端的时候要指定端点的name:

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

如果配置文件中只有一个端点,则使用*:

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

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

还要注意我是如何将 IDisposable 客户端包装在 using 语句中的,以确保在您完成使用后正确处理它。

【讨论】:

  • 感谢您的关注,但我不明白应该在哪里编写关于端点的规范。无论如何,我可以尝试再次执行该任务。
  • 你应该在你实例化代理的地方(button1_Click)这样做。
  • 对 WCF 客户端使用 using 语句是不好的做法,因为它不会正确处理客户端。见Avoiding Problems with the Using Statement。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-04
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多