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
.net 您能否拦截WCF消息对象创建?(服务器端)_.net_Wcf - Fatal编程技术网

.net 您能否拦截WCF消息对象创建?(服务器端)

.net 您能否拦截WCF消息对象创建?(服务器端),.net,wcf,.net,Wcf,如果我有一个WCF服务,它有一个公开的方法,例如: DoSomething(MyMessage msg) 我是否可以截取方法调用的参数创建或更改其实例化方式 编辑(用于上下文): 我知道这是一种代码味道,所以这个问题更多的是出于好奇,但想象一下,一旦收到消息,我们希望使用Unity在服务器上的消息上执行构造函数注入。这就是为什么我想截取消息创建—使用Unity来实例化它。这有一个庞大的WCF扩展性示例列表 如果正确理解您的问题,您希望能够处理服务类上消息的调用—请查看此示例:您可以实现一个参数

如果我有一个WCF服务,它有一个公开的方法,例如:

DoSomething(MyMessage msg)
我是否可以截取方法调用的参数创建或更改其实例化方式

编辑(用于上下文): 我知道这是一种代码味道,所以这个问题更多的是出于好奇,但想象一下,一旦收到消息,我们希望使用Unity在服务器上的消息上执行构造函数注入。这就是为什么我想截取消息创建—使用Unity来实例化它。

这有一个庞大的WCF扩展性示例列表


如果正确理解您的问题,您希望能够处理服务类上消息的调用—请查看此示例:

您可以实现一个参数检查器,在将消息发送到服务之前检查参数

实现参数检查器的关键是实现IPParameterInspector接口。此接口包含两个方法:BeforeCall和AfterCall。这些方法的签名如下:

void AfterCall(string operationName, object[] outputs, object returnValue, object
correlationState);

object BeforeCall(string operationName, object[] inputs);
在这两种情况下,发送给方法的参数都作为对象数组呈现给这些方法。但是,它们在管道中的位置取决于检查器是插入到客户端还是插入到服务端。有关更多信息,请参阅以下链接:


除了McCurs所提到的扩展点之外,您还可以考虑<代码> IOPATION调用器< /Cord>扩展点。根据您对参数的具体操作,这可能更适合或更容易满足要求。

是的,您可以这样做-但这是在调用之前的客户端上-OP在执行方法之前询问服务器端的情况。。。