InvocationContext
사전에 값을 추가했지만 다음 호출에서는 유지되지 않습니다. 즉, 가로 챈 체인의 각 호출은 InvocationContext.ContainsKey("tracing-id")
에 대해 false를 반환합니다.InvokeContext가 내용을 유지하지 않습니다
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;
}
내가
getNext()(input, getNext)
가 호출되고 다음 호출이 차단 될 때 그러나,
InvocationContext
가 비어의
InvocationContext
에 항목을 추가 할 수 있습니다
.
어떻게 InvocationContext
을 사용했는지 오해하니? 그렇다면 한 메서드 호출에서 ID와 같은 것을 유지하는 올바른 방법은 무엇입니까?
어떤 종류의 인터셉터를 사용하고 있습니까? – cynic
'InterfaceInterceptor' – BanksySan
Unity 소스 코드를 간단히 살펴 봤는데 인터페이스 차단은 진행되는 모든 코드 생성으로 인해 가장 가독성이 떨어집니다. 가능한 경우 투명 프록시 인터셉터 또는 가상 메소드 인터셉터를 사용해 볼 수 있습니까? 이것이 작동하면 인터페이스 차단 구현에 버그가있을 수 있습니다. 어쨌든 스레드 로컬 저장소 나 내장 된 CallContext를 사용하여 원하는 것을 얻을 수 있습니다. – cynic