2010-08-28 40 views
6

我用代碼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

回答

18

我會在這種情況下做的是看在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

0

嘗試將引用您的項目添加到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

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應用程序中。

+0

感謝您的評論。我會研究這一點。我以前不知道。只是想讓它工作...... – OneWorld 2010-08-28 14:21:27

+0

是的,我甚至不需要這個代碼! *大聲笑*謝謝!我確信這將是我的下一個問題;) – OneWorld 2010-08-28 14:37:21

1

Timwi說得對,但爲了完整。不,VS沒有內置的'Solve'功能,但是這個功能已經被一些附加組件部分添加了。例如,Resharper將添加選項以添加引用並在需要時使用 - 但它必須在解決方案之前被引用,因此它不能解決初始查找問題。

1

這是一個不使用正確框架的簡單情況,我的意思是完整的胖版本,而不是默認的「輕」版本。

右鍵單擊該項目,然後點擊屬性,並確保完整版的最新架構的選擇,即「.NET框架4' ,而不是」 .NET框架4客戶端配置文件」

相關問題