使用WCF服务类(.cs文件)而不是WCF

本文关键字:WCF 文件 cs 服务 使用 | 更新日期: 2023-09-27 18:14:56

好吧,我不确定是否有重复的,因为我想不出更好的方式来问这个问题。

我有一个WCF服务(接口作为契约,然后是一个实现接口的类-像往常一样)。它是托管的,每个人都可以看到服务,我可以正常调用函数。

我们使用的是Visual Studio 2005(在这里是c#)。

我试图创建一个控制台应用程序引用(不是作为web引用)的WCF类,并调用方法。这样我就可以直接调试它。我知道这是可能的(也就是说:我几乎确定这是可能的),但每次我尝试时,我的主机应用都会崩溃,因为我没有向它提供WCF必需品(Endpoint等)。对此,我倾向于大喊:"嗯,废话:我试着把它叫做。dll,而不是Web服务!"但我不认为这有多大帮助。

我得到的具体错误是"找不到引用合同的默认端点元素"。在ServiceModel客户端配置部分中的IRetrievalService'。这可能是因为没有找到您的应用程序的配置文件,或者因为在客户端元素中没有找到与此契约匹配的端点元素。"但是,再一次,我特别尝试避免通过WCF调用它。

使用WCF服务类(.cs文件)而不是WCF

应该没有什么可以阻止您创建控制台应用程序,引用包含服务契约(接口)和实现的程序集,实例化实现并直接调用某些方法:

class Program
{
    static void Main()
    {
        var service = new MyService1();
        var result = service.SomeMethod(new SomeDataContract
        {
            Prop1 = "value 1"
        });
    }
}

没有WCF参与调用。

但是仅为了调试目的,您还可以使用WcfTestClient实用程序

我对WCF服务类进行了单元测试,将它们实例化为普通类。然而,我怀疑像OperationContext这样的东西。在这种情况下,电流可能会引起问题。

错误可能来自app.config文件和/或服务引用。如果您试图使用与使用WCF服务相同的客户端项目,则可能在app.config中有一个服务引用和一堆WCF配置-或者可能您清理了app.config但没有删除服务引用?