我试图创建一些cookie,因为我不能获取cookie和一种正常的方式,所以我将运行整个标题,只需手动创建cookie。然而,每当我尝试使用Response.Cookies和HttpCookie时,我都会得到一个错误:
当前内容中不存在名称响应
和
无法找到类型或命名空间名称'HttpCookie‘(您是缺少使用指令还是程序集引用?)。
我四处阅读,明白我需要参考
System.Web所以我点击Project -> Add Reference -> .NET并选择System.Web。然后我添加using System.Web;。
但我还是无法接触到它们。
发布于 2012-04-03 19:13:32
您试图从什么代码访问该项?
从本质上讲,需要采取两个步骤来引用一个类:
using指令。听起来你已经完成了第一步。第二个呢?这就是这个错误的意思:
无法找到类型或命名空间名称'HttpCookie‘(您是缺少使用指令还是程序集引用?)。
要执行上面的步骤2,您实际上有几个选项:
System.Web.HttpCookie.using指令,而不是使用HttpCookie。在文件的顶部(对于在这个命名空间中使用类的任何文件都需要这样做),您可以添加using System.Web。然后您可以直接引用HttpCookie .此外,你问题的第一部分提出了一个完全不同的问题:
名称响应在当前上下文中不存在
这又回到了我关于你在哪里访问这个值的问题。当您在为ASPX页面编写代码时,默认情况下您可以访问各种ASP.NET web上下文。这些都是由基类Page提供的。像Request和Response这样的东西是现成的。
但是,如果您试图从上下文之外(例如从自定义类或其他程序集)访问这些对象,则需要手动引用该上下文。这可以通过在the System.Web.HttpContext class上使用工厂来实现。
Request变成System.Web.HttpContext.Current.RequestResponse变成System.Web.HttpContext.Current.Response这是因为Request和Response不是实际的类。它们是当前web上下文中的属性,其类型为HttpRequest和HttpResponse。当您在相同的上下文中时,这些属性将为您映射,但在该上下文之外,您需要如前所述充分引用它们。
有一点要注意的是,通常认为在web上下文之外拥有依赖关系并不是很好的实践。因此,如果要创建自定义类或其他程序集,则可能需要退一步考虑设计。
如果您的自定义类依赖于HttpContext当前实例的存在,那么该代码永远不能在完全感知的web应用程序上下文之外使用。所以代码的可重用性更低。因此,根据您从上下文中需要的内容,您可以重新考虑代码,使其不需要上下文本身,而只需要提供上下文中的必要项。
这是不必要的,让你通过你当前的问题,但这是需要记住的事情,向前迈进。
https://stackoverflow.com/questions/9999403
复制相似问题