我正在尝试创建一些cookie,因为我无法获取cookie和正常方式所以我将遍历整个标头并手动创建cookie。但是,每当我尝试使用Response.Cookies
和HttpCookie
时,我都会收到错误消息:
当前内容中名称Response不存在
和
找不到类型或命名空间名称'HttpCookie'(您是否缺少using指令或程序集引用?)。
我阅读并了解我需要参考
System.Web
所以我点击Project -> Add Reference -> .NET
并选择System.Web
。然后我添加using System.Web;
。
但我仍然无法访问它们。
答案 0 :(得分:2)
您尝试访问该项目的代码是什么?
引用一个类基本上需要采取两个步骤:
using
指令。听起来你是第一步。那第二个怎么样?这就是错误的含义:
找不到类型或命名空间名称'HttpCookie'(您是否缺少using指令或程序集引用?)。
要执行上面的第2步,您实际上有几个选项:
HttpCookie
。System.Web.HttpCookie
using
指令。在文件的顶部(并且需要对使用此命名空间中的类的任何文件执行此操作),您将添加using System.Web
。然后你可以直接引用HttpCookie
。此外,问题的第一部分完全提出了一个单独的问题:
当前上下文中不存在名称Response
这又回到了我关于你在哪里访问这个值的问题。当您在ASPX页面的代码隐藏中编写代码时,默认情况下您可以访问ASP.NET Web上下文的各个部分。这些由基础Page
类提供。 Request
和Response
之类的内容随时可用。
但是,如果您尝试从该上下文之外访问这些对象(例如从自定义类或其他程序集),则需要手动引用该上下文。这可以通过the System.Web.HttpContext
class上的工厂来完成:
Request
变为System.Web.HttpContext.Current.Request
Response
变为System.Web.HttpContext.Current.Response
这是因为Request
和Response
不是实际的类。它们是当前Web上下文中属性HttpRequest
和HttpResponse
的属性。当您处于相同的上下文中时,会为您映射这些属性,但在上下文之外,您需要完全引用它们,如上所示。
需要注意的一点是,通常认为在Web环境之外依赖于Web环境并不是一种好的做法。因此,如果您正在创建自定义类或其他程序集,那么您可能需要退后一步并考虑设计。
如果您的自定义类依赖于当前HttpContext
实例的存在,那么该代码永远不会在完全感知的Web应用程序上下文之外使用。因此代码的可重用性较低。因此,根据您对该上下文的需求,您可以将代码重新分解为不需要上下文本身,但只需要提供上下文中的必要项。
这不是让你超越当前问题的必要条件,但是你要记住这一点。