我有一个使用BasicHttpBinding
并在IIS中托管的旧版WCF Web服务。
Web服务操作方法使用ThreadStatic
字段来保存在处理请求期间使用的状态数据。
我希望在每个操作完成后清理这些ThreadStatic字段,以便值不会泄漏"代码可能随后使用相同的线程池线程。
我天真地以为我可以在global.asax中的Application_EndRequest
中这样做;但这似乎不起作用,因为它似乎在不同的线程上运行。
因此,我考虑使用替代方法,即使用IDispatchMessageInspector
,并清除其ThreadStatic
方法中的BeforeSendReply
值。
在此之前,我想知道是否保证BeforeSendReply
将在与Operation
方法相同的线程上执行。任何人都可以告诉我,如果这是有保证的,如果有的话,指向权威的参考证实它?