我正在尝试向.NET Mvc应用程序中的每个请求添加一些请求上下文信息。我之所以使用LogicalCallContext,是因为我的请求有时会调用异步任务。但是,我发现在BeginRequest事件期间放置在逻辑调用上下文中的项目在管道的稍后操作方法中不可用。谁能解释这种行为?我正在使用.NET 4.5。
这是一些示例代码:
public class MyApp : HttpApplication
{
public override void Init()
{
this.BeginRequest += (sender, args) =>
{
CallContext.LogicalSetData("MyRequestId", Guid.NewGuid().ToString());
};
}
}
// in the action method
public ActionResult Action() {
var requestId = CallContext.LogicalGetData("MyRequestId");
// requestId is null?!
}
最佳答案
我无法重现您的问题,我正在使用.NET 4.5,MVC4。数据从“ MyApp”(Global.asax)和HttpModule(我在尝试触发此问题时创建的)中显示。
这是一个干净的项目,仅包含您提供的代码,还是其他一些干扰CallContext的东西?
问题总是出现还是仅在重负载下出现? (我什至对Gatling有点摆弄,但那时也没有任何问题)