如何调用我的WCF服务构造函数?

时间:2010-11-02 15:32:09

标签: asp.net wcf web-services

我目前正试图了解一下ASP.NET开发环境的WCF服务,我相信我做得很好,除了让我难以理解的一件事。

基本上,我已经设置了WCF服务(让我们采用默认设置,添加构造函数):

public class MyService : IMyService
{
    public MyService() { /* blah */ }
    public DoWork() { /* blah */ }
}

IMyService界面将DoWork()方法定义为[OperationContract],应该如此。

所以我在VS2010用户界面上通过添加服务参考在另一个项目中引用了这个服务(比如一个[Unit]测试项目)。这将创建一个MyServiceClient的引用,它应该公开我的WCF服务方法。

然而,当我在我的测试项目中这样做时:

ServiceReference.IMyService service;
service = new ServiceReference.MyServiceClient();

... MyService()构造函数未被调用,主要是因为我实例化MyServiceClient,而不是MyService本身。

如何调用该构造函数?我打算将其用于初始化目的(例如,在分层实现中抓取一个层?)。

2 个答案:

答案 0 :(得分:6)

当您从客户端提出请求时,将在服务器上调用该构造函数。

创建Web服务的“引用”(然后使用客户端类)与引用常规.DLL非常不同。您的所有服务代码都将在服务器端运行,但直到调用服务...

答案 1 :(得分:1)

为每个请求调用服务器端构造函数的唯一方法是将InstanceContextMode设置为PerCall(在ServiceBehavior属性中)。