2014-02-06 46 views
0

希望使用:爲什麼system.web不可用?

fileMap.ExeConfigFilename = System.Web.HttpContext.Current.Server.MapPath("~/Synchroniser/ConvertXML/App.config"); 
在我的項目

。 .HttpContext正在標記,因爲命名空間不存在。 我看過一個老項目中,這一工程,並已進口的相同REF文件到我的引用,但它是一個黃色標記explainataion下垂,也嘗試添加

using System.Web.Http; 
using System.Web; 

,但沒有喜悅,任何想法?

+0

'項目/業績/添加reference' –

+0

我試圖通過添加它存在,但它沒有顯示,所以我瀏覽它在一個不同的項目,它導入,但標記爲黃色 – John

+0

你也許降級你的目標框架版本? –

回答

1

確保項目的目標是完整的.NET 4.0,而不是客戶端配置文件:

enter image description here

現在,你需要添加一個引用到System.Web組裝和using System.Web到文件:

enter image description here

所有這一切是說,請注意,這是做一個絕對可惡的東西。你的班級圖書館(a.k.a DAL,BAL,無論什麼......)都應該對任何HttpContext完全不瞭解。這純粹是網絡的東西,應該只存在於它所屬的網絡層。

您的DAL,BAL,...不應該進行任何System.Web.HttpContext.Current.Server.MapPath調用。它應該簡單地將文件名作爲參數。這個文件名的計算方式純粹是調用者的責任。所以如果調用者是一個Web應用程序,它可以使用MapPath方法。如果調用者是桌面應用程序,它應該使用其他的東西。如果它是Windows Phone應用程序,它應該使用另一件事。看看你的DAL,BAL,......現在怎麼不知道調用者,並且更加可重用?

+0

的確,只是一個小小的提示 - 如果要使用包括命名空間在內的完全指定的名稱,就沒有必要添加「using System.Web」......只是想澄清這個問題,因爲看起來他認爲在文件頂部添加額外的使用可能會解決該問題。 – walther

+0

我的答案的重點是他不應該做那樣的事情。他不應該在他不應該使用的地方使用任何'HttpContext'。 –

0

HttpContext.Current.Server.MapPath應HostingEnvironment.MapPath和REF System.Web.Hosting及時更換,以免使用的HttpContext