如何在WCF中的AfterReceiveRequest上从OperationContext获取OperationDescription?

Dev*_*per 3 wcf

在我对AfterReceiveRequest上的IDispatchMessageInspector的实现中,我想检查是否对正在调用的当前操作应用了OperationBehavior.所以我需要访问即将被调用的操作的OperationDescription?任何直接的方式,而不是必须比较当前操作的动作与DispatchRuntime中的所有操作?

谢谢..

小智 6

我有同样的问题,并通过以下方式解决.

OperationContext ctx = OperationContext.Current;
ServiceDescription hostDesc = ctx.Host.Description;
ServiceEndpoint endpoint = hostDesc.Endpoints.Find(ctx.IncomingMessageHeaders.To);
string operationName = ctx.IncomingMessageHeaders.Action.Replace(
  endpoint.Contract.Namespace + endpoint.Contract.Name + "/", "");
OperationDescription operation =
endpoint.Contract.Operations.Find(operationName);
Run Code Online (Sandbox Code Playgroud)

这是msdn论坛的建议解决方案