簡體   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