使用IClientMessageInspector界面时,我可以从BeforeSendRequest方法中取消请求吗?null无论如何,返回发送请求.
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
if(Condition)
{
return null; //I want cancel my send
}
else
{
return request;
}
}
Run Code Online (Sandbox Code Playgroud) 我IClientMessageInspector在我的应用程序中实现了"拦截"传出Web服务调用.是否有可能找出哪些操作正在从内部被称为BeforeSendRequest和AfterReceiveReply?
这里有一个类似的问题,如何在WCF消息检查器中获取调用的操作名称,该命令用于服务器端(接收请求的一方).我尝试做类似的事情,例如
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
var v = OperationContext.Current.OutgoingMessageProperties["HttpOperationName"];
return null;
}
public void AfterReceiveReply(ref Message reply, object correlationState)
{
var v = OperationContext.Current.OutgoingMessageProperties["HttpOperationName"];
}
Run Code Online (Sandbox Code Playgroud)
但在传出请求期间,似乎OperationContext.Current为null,所以我不能使用它.知道如何获得它吗?知道怎么干净利落(相反,解析SOAP xml)?