我有一个混合的asp.net解决方案,同时包含Webforms和WebAPI 2(通过owin托管)。我需要确保所有请求都在正确的文化中处理。在介绍WebAPI之前,我们在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请求没有获取MiddleWare中的文化集(即使执行了MiddleWare)。
在Owin MiddleWare中设置之后,有人可以解释为什么de Webforms生命周期中的文化会恢复为默认值吗?
我调查的事情: