找不到的HttpContext在.NET中3.5和Visual Studio 2008

问题描述:

我用代码here,我得到以下错误: 不能使用HttpContext.Current.Server.MapPath()找不到的HttpContext在.NET中3.5和Visual Studio 2008

在Visual Studio 2008中请问ContextMenuEntry“解决”帮你当你缺少参考?

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

我该如何运行?

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

+0

谢谢大家快和高质量的答案,特别是Timwi和Guffa! – OneWorld 2010-08-28 17:59:55

+0

我现在总是使用JetBrains中的ReSharper来“解决”这些问题(David Culp回答)。使用此插件,您可以添加到Eclipse中常见的Visual Studio功能。 – OneWorld 2013-01-22 19:45:32

我会在这种情况下做的是看在MSDN(或谷歌)HttpContext。我这样做,它说它在System.Web。所以确保你的项目有一个System.Web的参考。

“Add Reference” menu item

“System.Web” in the Add Reference dialog

...然后它似乎工作:

HttpContext is now available.

+0

你摇滚!感谢屏幕演员;) 我认为键入“使用System.Web”就足够了。也许我不得不通过这个菜单来设置使用指令。或者IDE无法识别复制的代码。 不知何故,因为我的档案中没有任何变化;) – OneWorld 2010-08-28 14:19:01

+0

@user:如果Timwi帮助你,一定要将其标记为答案。请注意,程序集引用和使用语句是不同的动物。程序集引用决定了您的应用程序可以使用哪些代码。使用语句的名称空间仅提供便捷的简写,用于引用不具有完整名称空间限定名称的类。你会发现添加引用只会改变你的csproj/vbproj文件。 – kbrimington 2010-08-28 14:35:55

+0

@ user433718:除了上述的@kbrimington之外,还要指出程序集的名称并不总是与名称空间名称相同(这使得它非常令人困惑)。例如,很多WPF的东西都在组件* PresentationCore *中,但是在名称空间* System.Windows.Media *中。 – Timwi 2010-08-28 14:49:39

尝试将引用您的项目添加到System.Web

HttpContextSystem.Web的成员。

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

+0

我已经有“使用System.Web程序” 但是,当我尝试键入“使用System.Web.HttpContext”它说:“HttpContext的”未命名空间“System.Web程序” 发现我也在代码中尝试了“System.Web.HttpContext.Current.Server.MapPath()”。此时Visual Studio又说:“不在命名空间中......” – OneWorld 2010-08-28 13:58:47

+0

@ user433718:你不能在'using'语句中放置'HttpContext',因为它是一个类,而不是命名空间。 – Guffa 2010-08-28 14:11:52

+0

如果未引用DLL,则IDE无法自动检测命名空间。如果你想能够做到这一点,即使没有引用的DLL,我不认为这是可能的。 – 2010-08-28 14:52:46

你可以看一下在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应用程序中。

+0

感谢您的评论。我会研究这一点。我以前不知道。只是想让它工作...... – OneWorld 2010-08-28 14:21:27

+0

是的,我甚至不需要这个代码! *大声笑*谢谢!我确信这将是我的下一个问题;) – OneWorld 2010-08-28 14:37:21

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

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

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