2011-09-13 9 views
1

Server.MapPath( "page.aspx")は長時間使用していますが、今はこの問題に直面しています。Server.MapPathを使用するとHtmlファイルへのアクセスが拒否される

は基本的にここでエラーがJavaScriptの実行時にhtmlfile:access is deniedだろう私のコード

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

です。しかし、Server.MapPathを削除してResponse.Redirect("~/Default.aspx");のようになると、正常に動作します。

どうしたのですか?なぜ、どのように、いつ、そしていつServer.MapPathを使用できますか?

ありがとうございました。

答えて

0

のResponse.Redirectは、URLを期待するのに対し、Server.MapPathのは、ハードディスク上のファイルへの物理パスを取得します。何らかの理由であなたは完全なURLを取得する必要がある場合は

、あなたはこれを使用することができます。

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

Server.MapPathは、指定された相対パスまたは仮想パスをサーバー上の対応する物理ディレクトリにマップします。したがって、あなたの例では、これは次のようなものにリダイレクトされます。

c:\Projects\MyWebsite\Default.aspx 

これはおそらくあなたが望むものではありません。あなたがそれを使用することになり、あなたがServer.MapPathを使用したいときのためとして

/MyVirtualDirectory/Default.aspx 

:一方

Response.Redirectはあなたのために、相対パスのルートに「〜」を解決し、このような何かに解決されますあなたが実際にサーバー上のファイルを検索し、そのような何かをしたい場合:

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