添加对System.Web的引用

时间:2012-04-03 18:43:54

标签: reference

我正在尝试创建一些cookie,因为我无法获取cookie和正常方式所以我将遍历整个标头并手动创建cookie。但是,每当我尝试使用Response.CookiesHttpCookie时,我都会收到错误消息:

  

当前内容中名称Response不存在

  

找不到类型或命名空间名称'HttpCookie'(您是否缺少using指令或程序集引用?)。

我阅读并了解我需要参考

System.Web

所以我点击Project -> Add Reference -> .NET并选择System.Web。然后我添加using System.Web;

但我仍然无法访问它们。

1 个答案:

答案 0 :(得分:2)

您尝试访问该项目的代码是什么?

引用一个类基本上需要采取两个步骤:

  1. 在项目中添加对“程序集”的引用。
  2. 在代码文件中的类'命名空间中添加using指令。
  3. 听起来你是第一步。那第二个怎么样?这就是错误的含义:

      

    找不到类型或命名空间名称'HttpCookie'(您是否缺少using指令或程序集引用?)。

    要执行上面的第2步,您实际上有几个选项:

    1. 完全限定班级名称。因此,您可以使用HttpCookie
    2. ,而不是使用System.Web.HttpCookie
    3. 在代码文件中添加using指令。在文件的顶部(并且需要对使用此命名空间中的类的任何文件执行此操作),您将添加using System.Web。然后你可以直接引用HttpCookie
    4. 此外,问题的第一部分完全提出了一个单独的问题:

        

      当前上下文中不存在名称Response

      这又回到了我关于你在哪里访问这个值的问题。当您在ASPX页面的代码隐藏中编写代码时,默认情况下您可以访问ASP.NET Web上下文的各个部分。这些由基础Page类提供。 RequestResponse之类的内容随时可用。

      但是,如果您尝试从该上下文之外访问这些对象(例如从自定义类或其他程序集),则需要手动引用该上下文。这可以通过the System.Web.HttpContext class上的工厂来完成:

      1. Request变为System.Web.HttpContext.Current.Request
      2. Response变为System.Web.HttpContext.Current.Response
      3. 这是因为RequestResponse不是实际的类。它们是当前Web上下文中属性HttpRequestHttpResponse的属性。当您处于相同的上下文中时,会为您映射这些属性,但在上下文之外,您需要完全引用它们,如上所示。

        需要注意的一点是,通常认为在Web环境之外依赖于Web环境并不是一种好的做法。因此,如果您正在创建自定义类或其他程序集,那么您可能需要退后一步并考虑设计。

        如果您的自定义类依赖于当前HttpContext实例的存在,那么该代码永远不会在完全感知的Web应用程序上下文之外使用。因此代码的可重用性较低。因此,根据您对该上下文的需求,您可以将代码重新分解为不需要上下文本身,但只需要提供上下文中的必要项。

        这不是让你超越当前问题的必要条件,但是你要记住这一点。