Asp.net Global.asax vs Owin中间件:设置线程区域性
我有一个混合asp.net解决方案,它同时包含Webforms和WebAPI 2(通过owin托管)。我需要确保所有请求都在正确的区域性中处理。在引入WebAPI之前,我们的Asp.net Global.asax vs Owin中间件:设置线程区域性,asp.net,asp.net-web-api2,owin,global-asax,.net-4.6,Asp.net,Asp.net Web Api2,Owin,Global Asax,.net 4.6,我有一个混合asp.net解决方案,它同时包含Webforms和WebAPI 2(通过owin托管)。我需要确保所有请求都在正确的区域性中处理。在引入WebAPI之前,我们的Global.asax文件中有以下代码: public void Application_AuthenticateRequest(object sender, EventArgs e) { Thread.CurrentThread.CurrentCulture = GetCulture(); Thread.Cur
Global.asax
文件中有以下代码:
public void Application_AuthenticateRequest(object sender, EventArgs e)
{
Thread.CurrentThread.CurrentCulture = GetCulture();
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture
}
我们现在引入了WebAPI,它不使用Global.asax
中设置的区域性。调试后,我们发现,由于使用了app.UseCookieAuthentication()
,owin管道在AuthenticateRequest
之前执行(因此在设置区域性之前)
因此,我们将文化背景移到了Owin MiddelWare
public async override Task Invoke(IOwinContext next)
{
Thread.CurrentThread.CurrentCulture = GetCulture();
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture
}
这对于我们的WebAPI调用非常有效,但是现在我们的常规Webforms请求没有获取中间件中的区域性集(即使中间件已经执行)
有人能解释为什么在Owin中间件中设置了is之后,de Webforms生命周期中的区域性恢复为默认值吗
我调查的事情:
- ManagedThreadId在中间件和global.asax中是相同的