Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何调用WCF服务构造函数?_Asp.net_Wcf_Web Services - Fatal编程技术网

Asp.net 如何调用WCF服务构造函数?

Asp.net 如何调用WCF服务构造函数?,asp.net,wcf,web-services,Asp.net,Wcf,Web Services,我目前正在尝试了解ASP.NET开发环境的WCF服务,我相信我做得很好,只是有一件事让我感到困惑 基本上,我已经设置了一个WCF服务(让我们使用默认设置,并添加了一个构造函数): IMyService接口将DoWork()方法定义为一个[OperationContract] 因此,我已经在另一个项目(比如一个[Unit]测试项目)中通过VS2010 UI上的Add service Reference引用了这个服务。这将创建一个对MyServiceClient的引用,该引用公开了我的WCF服务方法

我目前正在尝试了解ASP.NET开发环境的WCF服务,我相信我做得很好,只是有一件事让我感到困惑

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

IMyService
接口将
DoWork()
方法定义为一个
[OperationContract]

因此,我已经在另一个项目(比如一个[Unit]测试项目)中通过VS2010 UI上的Add service Reference引用了这个服务。这将创建一个对
MyServiceClient
的引用,该引用公开了我的WCF服务方法

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

ServiceReference.IMyService service;
service = new ServiceReference.MyServiceClient();
。。。不会调用
MyService()
构造函数,基本上是因为我正在实例化
MyServiceClient
,而不是
MyService
本身


我该如何调用构造函数呢?我计划将其用于初始化目的(例如,可能在分层实现中获取一个层?)。

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


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

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

因此,基本上,您是说,不是添加服务引用,我应该先向服务项目添加引用,然后直接访问服务类?不,添加服务引用是正确的。。。但是服务类中的构造函数并不是作为本地代码的一部分运行的,而是在调用服务时在IIS服务器上运行的。它将在运行任何服务方法之前被调用,而不是在创建客户端对象时。明白了。当我意识到我还没有在我的测试项目中调用任何服务方法时,我正在使用您的解决方案D谢谢!没错,但我想你指的是ServiceBehavior属性。:)
ServiceReference.IMyService service;
service = new ServiceReference.MyServiceClient();