WCF - 选择哪个扩展点来在线程上应用本地化?

3
我正在根据http://www.codeproject.com/KB/WCF/WSI18N.aspx和其他文章,在我的WCF应用程序中实现本地化。基本上,我在客户端(使用IClientMessageInspector实现)附加了一个带有当前区域信息的消息头,然后在服务器端(使用ICallContextInitializer实现)应用区域信息到当前线程上。我目前面临的问题是,我的ICallContextInitializer实现可能不是实际更改Thread.CurrentThread.CurrentCulture的最佳位置,因为在AfterInvoke()中重置线程的文化发生在仍应处于本地化环境的其他事物之前。目前我在ICallContextInitializer之后调用IErrorHandler实现时遇到问题,因此线程已经被重置回默认文化,因此我无法在我的IErrorHandler中使用本地化资源。
是否有比ICallContextInitializer更好的扩展点可用于基于消息头的本地化?或者更好的是 - 是否有描述WCF执行顺序的文章?我想了解不同扩展点处理的顺序...
问题已经解决,但是我想获取关于WCF内部执行顺序等更多信息 - 有什么阅读建议吗?
2个回答

4

调度程序的确切行为方式并没有得到很好的记录(就像WCF中的许多内容一样)。个人建议尝试使用IDispatchMessageInspector,因为它也会在生成和返回故障消息后运行,这可能更有可能使您的IErrorHandler在正确的上下文中运行。


1
我使用IDispatchMessageInspector重新实现了这个问题,它确实开始按照我需要的方式工作了 - IErrorHandler.ProvideFault在当前线程文化在IDispatchMessageInspector.BeforeSendReply中被重置之前就被调用了。谢谢。无论如何,我想获取关于WCF交互/执行顺序的更多信息,以便更深入地了解WCF - 如果有任何关于此主题的阅读提示,将不胜感激... - Buthrakaur

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接