如何访问AspnetCore 1.0中的ServerVariables

时间:2016-07-18 06:08:25

标签: asp.net-core httpcontext server-variables request.servervariables

在现有的.Net网站上,可以使用

访问服务器变量
/**
 * List of all accessible Action from URL
* @var array
*/
var $accessControllList = array(
    'allowed' => array('view','index'), // allowed for any role.
    'role_base' => array(
        'administrator' => array('delete', 'approve'), //specially allowed for administrator only
        'publisher' => array('view','create','index','replyComment'), // specially allowed for publisher only
        'reader' => array('postComment','replyComment') // specially allowed for reader
    )
);

如何访问AspnetCore 1.0 Web应用程序中的ServerVariables?
在控制器内部进行调试时,HttpContext.Current.Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"] 不包含this.HttpContext.Features

2 个答案:

答案 0 :(得分:6)

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

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

在这些日子里,浏览器并不一致,并且没有始终如一地传递Accept-Language个标题。 为了填补这一空白,IIS等应用程序服务器必须通过智能地设置它来构建它,方法是使用服务器上的标头,用户代理字符串和默认配置的组合来组成与应用程序相关的内容。

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

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

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

      Request Message in windows .NET framework

      HttpRequest class in dotnet core

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

    3. 因此,应用程序可以只检查Request Header集合。

      进一步扩展, 使用dotnet核心,有许多公开的功能,Web服务器的实现可以支持这些功能。可以找到详细信息here

      有助于了解框架和网络服务器如何整齐地分离的更多细节可以是found here

答案 1 :(得分:2)

你不能因为应用程序现在用完了。但是,正如humblelistener指出的那样,大部分信息都可以在其他地方找到。接受语言是你唯一需要的吗?

相关问题