0

次のコードを使用して、仮想パスでファイルを読み込もうとしています

HostingEnvironment.VirtualPathProvider.FileExists(_SiteMapFileName)

_SiteMapFileNameには「~/Content/en-US/MainMenu.sitemap」のようなものがあり、常に返されfalseます。

しかし、その仮想パスの URL ( http://www.local.mysite.com/Content/en-US/MainMenu.sitemap ) にアクセスすると、ファイルはブラウザーに正しく表示されます。

Contentは、私の Web サイトの下にある仮想ディレクトリであり、別の場所にある共有フォルダーを指しています。Windows エクスプローラーでその場所にアクセスすると、ファイルを正しく表示できます

サイトと仮想ディレクトリをネットワーク アカウントとして接続するように設定しました。

プロセス監視ツールを使用して問題があるかどうかを確認したところ、w3wp.exe がファイル \path\to\shared\location\Content\en-US\MainMenu.sitemapを作成しようとしているが、 ACCESS DENIEDに​​なっていると表示されます。読み取り専用の場所なので問題ありません

この問題を解決する方法はありますか?

4

2 に答える 2

2

その理由がわかりました。アプリケーションに関連付けられたアプリ プールを実行するように設定されたユーザーは、Web サイトと仮想ディレクトリだけでなく、読み取ろうとしているファイルに対するアクセス許可を持っている必要があります。:/

于 2013-04-23T02:13:19.220 に答える
1

vDir を使用するときは Server.MapPath を使用しますが、うまくいきませんか?

if(System.IO.File.Exists(Server.MapPath("Relative Path to vDir")))
{
    //do something with the file
}
于 2013-04-22T19:20:16.413 に答える