2011-11-16 40 views
1

好吧,我不确定是否有重复,因为我想不出有更好的方法来问这个问题。使用WCF服务类(.cs文件)而不是WCF

我有一个WCF服务(接口作为契约,然后是一个实现接口的类 - 按照惯例)。它是托管的,每个人都可以看到该服务,并且我可以正常调用这些功能。

我们使用的是Visual Studio 2005(本例中为C#)。

我试图创建一个控制台应用程序,它引用(而不是作为Web引用)的WCF类,并调用方法。这是我可以直接调试它。我知道这是可能的(即:我几乎肯定它可能),但每次我尝试时,我的控制台应用程序爆炸,因为我没有喂它的WCF必需品(端点等)。我倾向于大声呼喊,“呃,呃:我试图称它为一个.dll,而不是一个Web服务!”但我认为这不会有多大帮助。

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

任何建议,将不胜感激。

+0

我建议在您的控制台应用程序中发布一些代码,在此实例化服务对象并调用其上的方法。你得到的错误表明你正在利用一些WCF组件,就像一个渠道工厂。 –

回答

3

应该有什么阻止你创建一个控制台应用程序,引用该服务合同(接口)和实现的程序集,实例化的实施和直接调用一些方法:

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

没有WCF参与电话。

但是出于调试目的,您只能使用WcfTestClient实用程序。

+0

WcfTestClient仅适用于.net 3.5或更高版本,我没有它可用于VS2005(.net 3)。 – AllenG

+0

@AllenG,的确,WcfTestClient适用于.NET 3.5或更高版本。 –

+0

好吧,我通过删除并重新添加引用来解决它的问题,直到它工作。但是,你的正确(我知道我不是那么疯狂),只能实例化这个类。 – AllenG

0

我做了WCF服务类的单元测试,将它们实例化为普通类。 但是,我怀疑诸如OperationContext.Current之类的东西在这种情况下可能会导致问题。

0

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