【问题标题】:Can't find HttpContext in .NET 3.5 and Visual Studio 2008在 .NET 3.5 和 Visual Studio 2008 中找不到 HttpContext
【发布时间】:2010-08-28 13:46:38
【问题描述】:

我使用了来自here 的代码,但出现以下错误: 无法使用HttpContext.Current.Server.MapPath()

在 Visual Studio 2008 中,当您缺少引用时,ContextMenuEntry“解决”是否可以帮助您?

我已经发现 HttpContext 在我的 IDE 中不是 System.Web 的成员。 根据帮助 > 信息,我正在使用 .NET 3.5 SP1。

我如何让它运行?

在这种情况下,你通常会如何反应?你在 msdn.com 中寻找什么东西?

【问题讨论】:

  • 感谢大家提供快速和高质量的答案,尤其是 Timwi 和 Guffa!
  • 我现在总是使用 JetBrains 的 ReSharper 来“解决”这些问题(由 David Culp 回答)。使用此插件,您可以将 Eclipse 中的常识添加到 Visual Studio 中。

标签: c# .net httpcontext


【解决方案1】:

在这种情况下,我会在 MSDN(或 Google)上查找 HttpContext。我这样做了,它说它在System.Web。因此,请确保您的项目引用了System.Web

...然后它似乎工作:

【讨论】:

  • 你摇滚!感谢您的截屏;)我认为输入“Using System.Web”就足够了。也许我必须通过这个菜单来设置使用指令。或者 IDE 无法识别复制的代码。不知何故魔术,因为我的文件没有任何变化;)
  • @user:如果 Timwi 帮助了您,请务必将其标记为答案。请注意,程序集引用和 using 语句是不同的动物。程序集引用决定了您的应用程序可以使用哪些代码。命名空间 using 语句仅提供方便的简写方式来引用没有其完整命名空间限定名称的类。你会发现添加引用只会改变你的 csproj/vbproj 文件。
  • @user433718:除了上面@kbrimington 所说的之外,还要让我指出,程序集的名称并不总是与命名空间名称相同(这使得它非常混乱)。例如,很多 WPF 内容在程序集 PresentationCore 中,但在命名空间 System.Windows.Media 中。
  • @kbrimington:在我重新调整 OK 按钮之前,我不知道这一点。我想给它评分,但这对我来说是禁用的。所以,我现在要回答这个问题。感谢您在最后两个 cmets 中澄清问题!
【解决方案2】:

您可以在 documentation 中查找 HttpContext 类,它会告诉您它位于 System.Web 命名空间中,在 System.Web.dll 库中。

因此,要使用它,您需要引用 System.Web.dll 库,并且您需要 using System.Web; 语句,或者使用完全限定名称 System.Web.HttpContext.Current.Server.MapPath

但是,您确定要使用MapPath 方法吗?该方法获取对文件的 Web 引用的物理路径。如果 CSV 文件的路径是 Web 引用,例如 "/data/items.csv",那么您想使用 MapPath 方法,但如果您有一个物理路径,例如 "C:\mydata\items.csv",那么您不想转换它.

此外,MapPath 仅在您实际处于具有 HTTP 上下文的 Web 应用程序中时才有效。

【讨论】:

  • 感谢您的评论。我会调查的。我以前不知道。只是想让它以某种方式工作......
  • 是的,我什至不需要这个代码! 大声笑 谢谢!我确定这将是我的下一个问题;)
【解决方案3】:

Timwi 说得对,但为了完整性。不,VS 没有内置的“求解”功能,但是某些附加组件已部分添加了此功能。例如,Resharper 将添加选项以添加引用并在需要时使用 - 但它必须在解决方案中之前已被引用,因此它不能解决初始查找问题。

【讨论】:

    【解决方案4】:

    这是一个没有使用正确框架的简单案例,我的意思是完整的胖版本而不是默认的“轻”版本。

    右键单击项目,然后单击属性并确保选择了最新框架的完整版本,即“.NET Framework 4”,而不是“.NET Framework 4 Client Profile”

    【讨论】:

      【解决方案5】:

      尝试在您的项目中添加对System.Web 的引用。

      HttpContextSystem.Web 的成员。

      http://msdn.microsoft.com/en-us/library/system.web.httpcontext.aspx

      【讨论】:

      • 我已经有“Using System.Web”但是当我尝试输入“Using System.Web.HttpContext”时它说“HttpContext”在命名空间“System.Web”中找不到我也试过“ System.Web.HttpContext.Current.Server.MapPath()”在代码中。此时 Visual Studio 再次表示“不在命名空间中……”
      • @user433718:您不能将HttpContext 放在您的using 语句中,因为它是一个类,而不是命名空间。
      • 如果没有引用 DLL,IDE 将无法自动检测命名空间。如果您希望即使使用未引用的 DLL 也能做到这一点,我认为这是不可能的。
      猜你喜欢
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多