【问题标题】:Can't use WCF service client via Class Library无法通过类库使用 WCF 服务客户端
【发布时间】:2015-04-11 08:01:49
【问题描述】:

我在http://localhost:20999/WCFService上创建了一个简单的 WCF 服务

我可以通过控制台应用程序创建一个客户端来调用Web服务方法,但是在类库中创建一个WCF客户端时出错。

找不到引用合约的默认端点元素...

  • VS2010
  • 测试客户端是用 x64 编译的

然后我创建了一个简单的测试应用程序,包含 ConsoleApp 和 ClassLib。两个项目都将 WCF 服务添加为服务引用。

类 1 包含测试函数

public void Test()
    {
        ServiceReference2.TSI7WCFServiceClient client = new ServiceReference2.TSI7WCFServiceClient();
        Console.WriteLine(client.Invoke("123", "456"));
    }

和 ConsoleApp Program.cs

    Console.WriteLine("---- Call WCF directly ----");
    ServiceReference1.TSI7WCFServiceClient client = new ServiceReference1.TSI7WCFServiceClient();
    String result = client.Invoke("Test", "This is Parameter");
    Console.WriteLine("Result = {0}", result);
    client.Close();

    Console.WriteLine("\n\n---- Call WCF via ClassLib ----");
    ClassLibrary1.Class1 clientLib = new ClassLibrary1.Class1();
    clientLib.Test();

这是结果

【问题讨论】:

  • 这看起来像是配置问题,而不是编程问题。错误信息给出的提示你跟进了吗?

标签: c# wcf


【解决方案1】:

确保将端点信息从类项目的 app.config 复制到控制台项目的 app.config。

【讨论】:

  • 我是 WCF 的新手,顺便说一句,如果我在 ClassLib 中使用命名空间 ServiceReference1,与 Console lib 相同,它们都可以工作。
  • 服务引用指的是app.config中的一个端点配置。如果该端点在 app.config 中不存在或名称不同,它将找不到它。因此,您必须确保两个项目中都存在绑定和端点。不过,我不确定您为什么会在两个不同的项目中调用相同的 WCF 服务。最好是做一个或另一个。综上所述,是的,您需要手动将该信息从 app.config 复制到 app.config。
  • 我只想在classLib项目中使用WCF服务,但这只是一个解决问题的测试项目。顺便说一句,它的工作,非常感谢。我必须将端点从 ClassLib 添加到 ConsoleApp。
  • 没问题。编码愉快!
猜你喜欢
  • 2011-07-10
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
相关资源
最近更新 更多