ディクショナリに値が追加されましたInvocationContext
が、次の呼び出しまで保持されません。つまり、インターセプトされたチェーン内の各呼び出しは、 に対して false を返しますInvocationContext.ContainsKey("tracing-id")
。
public IMethodReturn Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext)
{
Guid tracingId;
if (!input.InvocationContext.ContainsKey(TRACING_ID))
{
tracingId = _tracingIdProvider.NewTracingId();
input.InvocationContext.Add(TRACING_ID, tracingId);
}
else
{
tracingId = (Guid)input.InvocationContext[TRACING_ID];
}
var methodReturn = getNext()(input, getNext);
return methodReturn;
}
にエントリを追加することはできますがInvocationContext
、getNext()(input, getNext)
が呼び出されて次の呼び出しがインターセプトされると、InvocationContext
は空になります。
の使い方を誤解しInvocationContext
ていますか?もしそうなら、あるメソッド呼び出しから次のメソッド呼び出しまで ID のようなものを永続化する正しい方法は何ですか?