System.Web.HttpContext未被识别。

34

我有一个使用C#的ASP.NET Web应用程序。我创建的其中一个类需要使用HttpContext。

根据http://msdn.microsoft.com/en-us/library/system.web.httpcontext(v=vs.90).aspx, HttpContext存在于.NET 3.5中的System.Web命名空间中(这是我安装的版本)。

然而,当我写HttpContext时,我没有看到自动完成。这告诉我HttpContext未被识别。

我查找了一些解决方案: 1.我添加了System.Web引用(通过右键单击“引用”->选择“.NET”选项卡和特定的引用)。 2.我还确保在类中包含以下行:using System.Web;

请告诉我还能做什么。如果一切顺利,当我写HttpContext.时,我应该能看到一个下拉列表,并能够在其中选择“Current”,其中还包括多个属性/元素。我对C#和Visual Studio(2008)都很陌生,但我认为自动完成无法正常工作是缺少引用/名称空间/加载错误/其他任何东西的好指示。


只是一个快速的问题 - 你试图在哪里使用HttpContext?是在代码后面?ASPX文件?还是另一个类? - Katalonis
你是否正确使用了 System.Web 呢? - Andrew Barber
安德鲁:我正在使用System.Web。Katalonis,我正在尝试在一个CLASS(添加到App_Code文件夹中的.CS文件)中使用HttpContext。[...] using System.Web; public static class Utilities { static Utilities() { } public static void LogError(Exception ex) { System.Web.HttpContext context = System.Web.HttpContext.Current;..... 如果有帮助的话,这就是类的开头!谢谢! - Anna T
1
只是猜测,也许类没有设置为编译?在解决方案资源管理器中单击.CS文件,转到属性,构建操作应设置为编译。 - Katalonis
另一个相关的问题:是否建议或有用将所有.cs文件的Build操作设置为Compile,默认情况下是这样的?有什么方法可以做到这一点吗?昨天我刚刚发现了这个属性,并在几个类中使用了它。你们都太棒了,非常迅速,特别感谢KATALONIC:确实,该类未设置为编译!我忘记了默认情况下类被设置为“Content”(而不是Compile)!我喜欢这个地方!希望将来也能做出类似的贡献。 - Anna T
3个回答

41

构造函数很少用来实例化HttpContext类。我总是使用静态属性HttpContext.Current,它是所有ASP.Net应用程序使用的当前实例。

要使用它,请确保您已添加对System.Web.dll程序集的引用并导入System.Web命名空间。


8
我正在使用带有dotNet 4.5的vs 2015,但这并不起作用。System.Web没有任何HttpContext类。 - John Henckel
除非您安装了NuGet包“Microsoft.AspNet.WebApi” - John Henckel
我有相同的问题,这对我也没有用,我能够导入 System.web,但它根本找不到 httpcontext。 - s3j80

5

这只是因为没有使用正确的框架,我的意思是使用完整版而不是默认的“轻量级”版本。

右键单击项目,然后选择属性,确保选择了最新框架的完整版本,即“ .NET Framework 4”,而不是“ .NET Framework 4客户端配置文件”。


2
提示:对于 VS 2015,请确保在您的项目中安装 NuGet 包“Microsoft.AspNet.WebApi”。仅安装“Microsoft.AspNet.WebApi.Core”是不够的。 - John Henckel

4
  1. 确保已包含该程序集。
  2. 确保dll的引用存在。
  3. 尝试“解析”并让Visual Studio包含引用。
  4. 调试后关闭并重新启动应用程序。

这个类应该可以正常工作。

更新:

using System.Web

class YourClass {
  public YourClass() {
    HttpContext _context = new HttpContext(your parameters)
  }
}

你好jefpw,谢谢你的回答!你能详细说明一下你的回答吗?正如我所说,我是新手。1. 我应该如何包含汇编文件呢?也许我已经做过了,不确定你的意思是什么?2. 至于包含引用,我按照上述方式操作了(右键点击“引用”-> 选择 .NET标签和特定的System.Web引用)。3. 你说的“尝试解决”是什么意思呢?非常感谢! - Anna T
以上见。如果你是初学者,HttpContext 是相当高级的类。你为什么需要 HttpContext?我在 ASP.NET 中从未使用过 HttpContext,而我已经使用 ASP.NET 4-5 年了。 - iefpw
我需要HttpContext是为了什么 - 据我所了解,HttpContext.Current.Request.RawUrl显示当前页面的URL(简短形式),我将在一个特别定制的错误页面上显示这些信息。这是我第二个网站。利用在线资源、技巧和建议。哇,已经在这个领域工作了4年。恭喜! - Anna T
Anna,使用网页的Context属性。您无需创建新的HttpContext。Context将捕获当前默认的HttpContext。 - iefpw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接