当前位置 : 主页 > 网络推广 > seo >

.net – WCF:从OperationContext检索MethodInfo

来源:互联网 收集:自由互联 发布时间:2021-06-16
有没有一种优雅的方式来获取在MessageInspector / AuthorizationPolicy /其他一些扩展点的服务实例上执行的方法?我可以用 OperationContext.Current.IncomingMessageHeaders.Action 但是我希望有一些方法可以
有没有一种优雅的方式来获取在MessageInspector / AuthorizationPolicy /其他一些扩展点的服务实例上执行的方法?我可以用

OperationContext.Current.IncomingMessageHeaders.Action

但是我希望有一些方法可以手动将SOAP操作与OperationContracts进行匹配。

我想要做的是在执行方法之前检查方法的属性。

它花了我永远,但我确实找到了一种比找到和扼杀整个合同更好的方式:

string action = operationContext.IncomingMessageHeaders.Action;
DispatchOperation operation = 
    operationContext.EndpointDispatcher.DispatchRuntime.Operations.FirstOrDefault(o =>
        o.Action == action);
// Insert your own error-handling here if (operation == null)
Type hostType = operationContext.Host.Description.ServiceType;
MethodInfo method = hostType.GetMethod(operation.Name);

你在那里您可以获得属性或做任何你喜欢的任何事情。

注意:您可能会试图在DispatchRuntime中使用OperationSelector。我发现的问题是在我的情况下,在处理的特定阶段,OperationSelector是一个空引用。如果您有权访问此属性,则可能比“扫描”OperationCollection更快,更可靠。

网友评论