我在InvocationContext字典中添加了一个值,但它不会持续到下一次调用。即,被拦截的链中的每个调用都返回 false for 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 之类的东西持久化的正确方法是什么?