2
如果我創建一個實現IParameterInspector的類,並使用自定義的ServiceBehavior將其插入到WCF管道中,調用BeforeCall和AfterCall時將使用該類的同一個實例嗎?換句話說,我可以在BeforeCall期間建立關於當前調用的狀態,我可以在AfterCall中訪問,並確保響應會來到同一個實例嗎?WCF會使用相同的ParameterInspector實例來處理BeforeCall和AfterCall嗎?
請注意下面示例代碼中的_stateValue?我能依賴這樣的機制嗎?
class OperationParameterInspector : IParameterInspector
{
public int _stateValue;
public object BeforeCall(string operationName, object[] inputs)
{
_stateValue = (int) inputs[0];
return null;
}
public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
{
int originalInput = _stateValue;
return;
}
}
我對此的思考越多,似乎所有請求中只有一個類的實例,這意味着內部狀態不起作用,因爲所有請求和響應都將通過,可能在多個線程中傳遞。如果任何人都瞭解如何在傳入的WCF請求之前和之後在管道中建立和維護狀態,我想在此討論它。 – Christopher 2011-03-27 16:42:04
[Make Object ID](http://blogs.msdn.com/b/zainnab/archive/2010/03/04/make-objectid-vstipdebug0015.aspx)在嘗試確定這類問題時非常有用。 – Will 2011-03-27 16:44:42
我也不知道這種行爲。即使每次調用都將服務配置設置爲實例,截取也會發生在單個實例上。很難預測。幾個美好的日子,把我的頭撞到牆上。 – 2016-11-10 11:57:56