如何在 AspnetCore 1.0 中访问 ServerVariables

How to access ServerVariables in AspnetCore 1.0

在现有的 .Net 网站中,使用

访问服务器变量
HttpContext.Current.Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"]

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

好吧,我不打算直接回答你的问题。我将尝试阐明为什么此服务器变量不再是问题。

"HTTP_ACCEPT_LANGUAGE" 是 IIS 和 .NET 用来在 ASP.NET 框架上促进与应用程序交流内容语言的服务器变量。

过去,浏览器并不一致,也不会始终如一地传递 Accept-Language headers。 为了填补这个空白,IIS 等应用程序服务器必须通过智能设置来弥补它,通过使用 headers、用户代理字符串和服务器上的默认配置的组合来弥补与应用程序。

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

  1. 几乎所有浏览器都设置 Accept-Language header。您可以通过简单地转到您最喜欢的浏览器的开发工具中的网络选项卡并检查 HTTP 请求 headers.
  2. 来看到这一点

  1. Http 请求消息 class 在较新版本的 .NET 中非常清晰易读。

    Request Message in windows .NET framework

    HttpRequest class in dotnet core

  2. 与在 Web 服务器中编写的一些复杂的不透明逻辑相比,它可以简化基于请求中 header 的内容服务。在所有应用程序和服务器都变得更轻之后,轻便和透明是值得的。为什么有人要在网络服务器中编写复杂的逻辑,而这并不是真正的网络服务器。

因此,应用程序可以简单地检查请求 Header collection。

再扩展一点, 使用 dotnet 核心,有许多公开的功能,Web 服务器的实现可以支持这些功能。详情可见here.

更多有助于理解框架和网络服务器如何巧妙分离的细节可以是 found here

您不能,因为该应用程序现在已用完进程。然而,正如 humblelistener 指出的那样,大部分信息都可以在其他地方获得。 Accept Language 是您唯一需要的吗?