首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加对System.Web的引用

添加对System.Web的引用
EN

Stack Overflow用户
提问于 2012-04-03 18:43:54
回答 1查看 11.8K关注 0票数 1

我试图创建一些cookie,因为我不能获取cookie和一种正常的方式,所以我将运行整个标题,只需手动创建cookie。然而,每当我尝试使用Response.CookiesHttpCookie时,我都会得到一个错误:

当前内容中不存在名称响应

无法找到类型或命名空间名称'HttpCookie‘(您是缺少使用指令还是程序集引用?)。

我四处阅读,明白我需要参考

代码语言:javascript
复制
System.Web

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

但我还是无法接触到它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-03 19:13:32

您试图从什么代码访问该项?

从本质上讲,需要采取两个步骤来引用一个类:

  1. 在项目中添加对类‘程序集的引用。
  2. 向代码文件中的类’命名空间添加using指令。

听起来你已经完成了第一步。第二个呢?这就是这个错误的意思:

无法找到类型或命名空间名称'HttpCookie‘(您是缺少使用指令还是程序集引用?)。

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

  1. Fully-qualify类名。因此,您可以使用System.Web.HttpCookie.
  2. Add作为代码文件的using指令,而不是使用HttpCookie。在文件的顶部(对于在这个命名空间中使用类的任何文件都需要这样做),您可以添加using System.Web。然后您可以直接引用HttpCookie .

此外,你问题的第一部分提出了一个完全不同的问题:

名称响应在当前上下文中不存在

这又回到了我关于你在哪里访问这个值的问题。当您在为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

这是因为RequestResponse不是实际的类。它们是当前web上下文中的属性,其类型为HttpRequestHttpResponse。当您在相同的上下文中时,这些属性将为您映射,但在该上下文之外,您需要如前所述充分引用它们。

有一点要注意的是,通常认为在web上下文之外拥有依赖关系并不是很好的实践。因此,如果要创建自定义类或其他程序集,则可能需要退一步考虑设计。

如果您的自定义类依赖于HttpContext当前实例的存在,那么该代码永远不能在完全感知的web应用程序上下文之外使用。所以代码的可重用性更低。因此,根据您从上下文中需要的内容,您可以重新考虑代码,使其不需要上下文本身,而只需要提供上下文中的必要项。

这是不必要的,让你通过你当前的问题,但这是需要记住的事情,向前迈进。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9999403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档