繁体   English   中英

WCF IParameterInspector + IErrorHandler

[英]WCF IParameterInspector + IErrorHandler

如果我同时将IParameterInspectorIErrorHandler附加到服务,是否可以确保在调用IErrorHandler.HandleError()的同一线程上IParameterInspector.BeforeCall()

我之所以需IParameterInspector.AfterCall() ,是因为在发生错误的情况下,永远不会调用IParameterInspector.AfterCall()而且也无法(据我所知)我可以在BeforeCall()创建关联状态对象。 因此,我希望通过在我的接口实现中使用ThreadStatic字段来克服这一问题:(

您可能要利用实例上下文扩展。

InstanceContextExtension: IExtension<InstanceContext>   
OperationContext.Current.InstanceContext.Extensions.Find<InstanceContextExtension>()

实例上下文扩展可以添加在BeforeCall方法中。 然后可以在AfterCall方法中检索实例上下文扩展并使用。 可以将任何特定于操作的数据放在此扩展对象中,而不用引入线程亲缘关系。

您可以让实现IErrorHandler的类也实现IParameterInspector。 然后,您可以将对相关状态的引用和输入参数存储为类变量。 然后可以从HandleError方法中访问它们。 每当发生未处理的异常时,我目前都在使用它来记录输入参数和原始消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM