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

Ric*_*gan 5 asp.net wcf web-services

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

基本上,我有一个WCF服务设置(让我们采取默认,添加构造函数):

public class MyService : IMyService
{
    public MyService() { /* blah */ }
    public DoWork() { /* blah */ }
}
Run Code Online (Sandbox Code Playgroud)

IMyService接口定义了DoWork()方法作为一个[OperationContract],因为它应该.

所以我通过VS2010用户界面上的添加服务参考,在另一个项目中引用了这个服务(假设是[单元]测试项目).这创建了一个对应该MyServiceClient公开我的WCF服务方法的引用.

但是,当我在我的测试项目中执行此操作时:

ServiceReference.IMyService service;
service = new ServiceReference.MyServiceClient();
Run Code Online (Sandbox Code Playgroud)

... MyService()构造函数没有被调用,主要是因为我实例化了一个MyServiceClient,而不是一个MyService本身.

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

Dan*_*zey 6

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

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

  • 不,添加服务引用是正确的......但是服务类中的构造函数不会作为本地代码的一部分运行 - 当您*调用*服务时,它将在IIS服务器上运行.它*将在任何服务方法运行之前被调用,而不是在您创建客户端对象时调用. (3认同)