我正在使用Logical CallContext将信息流回一系列等待中。有趣的是,在我的测试控制台应用程序,一切工作正常。但是,当在VS UnitTest的上下文中运行我的单元测试时,调用上下文似乎不会流过等待。LogicalCallContext在控制台应用程序中等待,但不是VS UnitTest
该方法内部:SendRequestAsyncImpl正在设置呼叫上下文,当方法返回时从断点处查询逻辑呼叫上下文时,呼叫上下文设置得很好。
然而,在下面的行中的AWAIT返回后:
Message response = await SendRequestAsyncImpl(m, true).ConfigureAwait(false);
逻辑呼叫上下文是空的。我想可能通过设置ConfigureAwait(true)而不是false来解决问题。但是这并不能解决问题。
不要紧,我尝试流,甚至设置SendRequestAsyncImpl像内一个简单的值类型:
System.Runtime.Remoting.Messaging.CallContext.LogicalSetData("flag", true);
不是的await后可恢复。
为什么这是从我的控制台应用程序工作?但不是来自我的单元测试?有什么不同? (我已经看到一些涉及AppDomain问题的其他堆栈溢出问题,但是我甚至无法编组一个布尔值,因为编组数据的能力似乎并不是问题所在。)
您的单元测试项目的目标是什么框架版本? –
好问题。它的目标是.NET 4.5 –
如果用'await Task.Delay(100);'替换你的SUT,它会流动吗? –