如何访问AspnetCore 1.0中的ServerVariables

Nav*_*eth 5 server-variables httpcontext request.servervariables asp.net-core

在现有的.Net网站中,可以使用服务器变量访问

HttpContext.Current.Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"]
Run Code Online (Sandbox Code Playgroud)

如何访问AspnetCore 1.0 Web应用程序中的ServerVariables?
在控制器内部调试时,this.HttpContext.Features不包含IServerVariablesFeature.

hum*_*ner 6

好的,我不会直接回答你的问题.我将试着说明为什么这个服务器变量不再是问题.

"HTTP_ACCEPT_LANGUAGE"是IIS和.NET用于促进ASP.NET框架与应用程序通信内容语言的服务器变量.

回到过去,浏览器不一致,并且没有Accept-Language一致地传递标题.为了填补这一空白,IIS等应用程序服务器必须通过智能地设置它,通过使用服务器上的标头,用户代理字符串和默认配置的组合来弥补与应用程序相关的内容.

我们不再需要它的原因很少,

  1. 几乎所有浏览器都设置了Accept-Language标题.您只需转到您喜欢的浏览器的devtools中的Network选项卡并检查HTTP请求标头即可看到此信息.

Chrome浏览器显示接受语言

  1. 较新版本的.NET中的Http Request Message类非常清晰易读.

    在Windows .NET框架中请求消息

    dotnet核心中的HttpRequest类

  2. 与在Web服务器中编写的一些复杂的不透明逻辑相比,可以简化为基于请求中的头部提供内容的简化.在所有应用程序变得越来越轻,服务器也变得越来越轻巧之后,它变得轻巧透明.为什么有人想要在网络服务器中编写一个复杂的逻辑,它不是真正的网络服务器.

因此,应用程序可以简单地检查Request Header集合.

进一步扩展,使用dotnet核心,有许多公开的功能,Web服务器的实现可以支持.细节可以在这里找到.

可以在此处找到有助于理解框架和Web服务器如何整齐地分离的更多细节