【问题标题】:why do we use HttpContext.Current?为什么我们使用 HttpContext.Current?
【发布时间】:2012-05-23 05:52:16
【问题描述】:

我不知道,我们为什么要使用HttpContext.Current
在这个属性中,我将它用于Session,但我不知道为什么!

public static string Name
{
    get
    {
         if (HttpContext.Current.Session["_n_"] != null)
            return HttpContext.Current.Session["_n_"].ToString();
         else return "";
    }
    set
    {
         HttpContext.Current.Session["_n_"] = value;
    }
}

【问题讨论】:

标签: c# asp.net


【解决方案1】:

HttpContext 是将所有与 http 相关的信息包装到一个位置的对象。 HttpContext.Current 是在活动请求期间创建的上下文。以下是您可以从中获取的一些数据的列表。

  1. 请求类型(发布、获取)
  2. 请求参数(查询字符串、发布的数据)
  3. 用户的 IP 地址
  4. Cookie

您还可以通过此对象控制您的输出。在Items 属性中,这是一个字典,您可以存储对象的实例以确保它们为请求创建一次。您可以控制应用自定义过滤器的输出流。

这是您可以使用此属性执行的操作的简短列表。

【讨论】:

    【解决方案2】:

    这是一种访问当前 HttpContext 的方法,该位置可能没有对上下文的引用,但在活动的 Web 请求中。

    【讨论】:

      【解决方案3】:

      这就像说“为什么我需要去银行取钱?”,答案是“因为钱就在那儿。

      回答你的问题。因为那是 Session 所在的地方。真的就是这么简单。你不必知道为什么,就是这样。

      还有一个更长的解释,其他人正在给出所有技术细节。但最终,答案只是归结为这一点。

      【讨论】:

        【解决方案4】:

        在 web 表单中的 asp.net MVC 之前,有类请求、响应,您可以在其中获取 cookie 和会话,而 MVC 中的那些人员所有 HTTP 信息(如请求和响应)及其属性现在都在 HTTpcontext 中。

        【讨论】:

        • 它没有改变。在 ASP.NET MVC 下是 System.Web 命名空间中的相同类。它们被称为 HttpRequest,HttpResponse,...,您可以像以前一样通过属性 HttpContext.Current 访问当前请求的实例。 WebForms 在 Page 类中有用于此目的的属性,但 HttpContext 也存在。
        • 我没有说它改变了我说请求和响应类被封装在Httpcontext中,但是你也100%正确^^因为他可以直接从控制器内的请求属性访问请求
        猜你喜欢
        • 2013-10-30
        • 2020-11-11
        • 2011-04-02
        • 1970-01-01
        • 1970-01-01
        • 2016-05-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多