在现有的 .Net 网站中,使用
访问服务器变量HttpContext.Current.Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"]
如何访问 AspnetCore 1.0 Web 应用程序中的 ServerVariables?
在 Controller 内部调试时, this.HttpContext.Features
不包含 IServerVariablesFeature
。
最佳答案
好吧,我不会直接回答你的问题。我将尝试阐明为什么这个服务器变量不再是问题。
“HTTP_ACCEPT_LANGUAGE”是 IIS 和 .NET 用于促进 ASP.NET 框架与应用程序进行内容语言通信的服务器变量。
过去,浏览器并不一致,并且没有一致地传递 Accept-Language
header 。
为了填补这一空白,IIS 等应用程序服务器必须通过智能设置来弥补这一缺陷,通过使用 header 、用户代理字符串和服务器上的默认配置的组合来弥补与应用程序相关的内容。 p>
我们不再需要它的原因很少,
- 几乎所有浏览器都设置
Accept-Language
header 。您只需转到您喜爱的浏览器的开发工具中的“网络”选项卡并检查 HTTP 请求 header 即可看到这一点。
较新版本的 .NET 中的 Http Request Message 类非常理智且易于阅读。
与 Web 服务器中编写的一些复杂的不透明逻辑相比,基于请求中的 header 提供内容可能会变得更加简单。在所有应用程序都变得越来越轻之后,服务器也变得越来越轻,因此轻量和透明是值得的。为什么有人想在网络服务器中编写复杂的逻辑,而这并不是真正的网络服务器。
因此,应用程序可以简单地检查请求 header 集合。
进一步扩展一下, 使用 dotnet core,有许多公开的功能,Web 服务器的实现可以支持这些功能。详情可参见here .
更多有助于理解框架和网络服务器如何巧妙解耦的细节可以是 found here
关于asp.net-core - 如何在AspnetCore 1.0中访问ServerVariables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38429604/