首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF IParameterInspector + IErrorHandler

WCF IParameterInspector + IErrorHandler
EN

Stack Overflow用户
提问于 2012-10-15 16:44:53
回答 2查看 1.6K关注 0票数 2

如果我将IParameterInspectorIErrorHandler都附加到一个服务,我能确保IErrorHandler.HandleError()会在调用IParameterInspector.BeforeCall()的同一线程上被调用吗?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-15 18:11:43

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

代码语言:javascript
复制
InstanceContextExtension: IExtension<InstanceContext>   
OperationContext.Current.InstanceContext.Extensions.Find<InstanceContextExtension>()

可以在BeforeCall方法中添加实例上下文扩展。然后可以在AfterCall方法中检索和使用实例上下文扩展。任何特定于操作的数据都可以放在这个扩展对象中,而不是引入线程亲和性。

票数 5
EN

Stack Overflow用户

发布于 2012-10-15 17:42:13

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12892055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档