2012-01-27 102 views
6

我試圖打開包含在我的C#是運行Web目錄中的一些數據文件的文件中的所有文本。基本上只是把它變成一個字符串。我試着做以下...ASP .NET C#得到在網絡路徑

string email = File.ReadAllText("/orderforms/email_templates/file_to_include.txt"); 

我不知道這是正確的方法,但它似乎有一個尋路的問題,整個路徑將根據它運行在什麼樣的Web服務器更改。

這是在目錄設置...

/Classes/Page.ascx.cs (the page that tries to read the text from the 
file) 
/orderforms/<one of multiple pages execute the above class here or in a sub directory 
/orderforms/email_templates/file_to_include.txt 
/orderforms/email_templates/file_to_include2.txt 

我應該使用什麼路徑和功能上的所有文件的內容讀取到一個字符串?

感謝

+1

僅供參考,每當一個URL路徑以斜槓開頭( 「/」 ),它被應用程序解釋爲網站ROOT,這意味着它被放置在域名後面以構建完整的URL。這與app-root不同,由asp.net應用程序(服務器端)中的「〜」字符表示。通常,app-root與site-root相同(當沒有涉及虛擬目錄時),但在開發環境中,通常也包含虛擬目錄(使用本地IIS時),因此您必須小心與領先的斜線。 – 2012-01-27 16:03:06

+0

我以前的評論與你的問題沒有直接關係,但我有一種感覺,你需要知道我說的是什麼。 – 2012-01-27 16:04:12

回答

24

試試這個:

string email = File.ReadAllText(Server.MapPath("~/orderforms/email_templates/file_to_include.txt")) 
+3

你必須有HttpContext來做到這一點,做到這一點,我不得不補充說。 'string email = File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath(「〜/ orderforms/email_templates/file_to_include.txt」));' – ferics2 2012-12-17 22:00:05