2011-09-13 22 views
1

我一直在使用Server.MapPath(「page.aspx」)很長一段時間,但現在我只是面臨這個問題。使用Server時,Htmlfile訪問被拒絕.MapPath

基本上這裏是我的代碼

Session.Clear();
ShowLoggedOffControl(); //A function that setup bunch of controls visibility
OnUserLoggedOut(new EventArgs());
Response.Redirect(Server.MapPath("~/Default.aspx"));

錯誤是htmlfile:access is denied在JavaScript執行。但是,當我刪除Server.MapPath,以便它變得像這樣Response.Redirect("~/Default.aspx");,事情正常工作。

我做錯了什麼?爲什麼,如何以及何時可以使用Server.MapPath?

謝謝。

回答

0

得到使用Server.Mappath到硬盤上的文件的物理路徑,而Response.Redirect的預期的URL。

如果由於某種原因,你需要得到完整的URL,你可以使用這個:

String.Format("http://{0}{1}", Request.Url.Host, Page.ResolveUrl(relativeUrl)); 
2

Server.MapPath將指定的相對或虛擬路徑映射到服務器上相應的物理目錄。所以在你的例子中,它最終會重定向到這樣的東西:

c:\Projects\MyWebsite\Default.aspx 

這可能不是你想要的。

,另一方面Response.Redirect將解決「〜」爲您的相對路徑根和決心是這樣的:

/MyVirtualDirectory/Default.aspx 

至於什麼時候你會想使用Server.MapPath,你會使用它如果你想真正找到服務器上的文件,並做一些事情,如:

var lines = System.IO.File.ReadAllLines(Server.MapPath("~/MyTextFile.txt")); 
// Do something here with values found