PDFを含む仮想ディレクトリを持つWebサイトがあります。ユーザーは、 http://myApp.com/PDFs/12345678.pdf などのURLを使用してPDFにアクセスします。ここで、PDFs
は\\\actualPhysicalServerName\PDFsDirectory\
にマップされた仮想ディレクトリです。これは機能します。
私は定期的にアプリケーションを再デプロイします。アプリケーションが再デプロイされてWebサイトが再起動されると、ユーザーはIISが再起動されるまで、仮想ディレクトリにアクセスできなくなります。
上記のURLにアクセスすると、次のエラーが発生します。
構成ファイルのロード中にエラーが発生しました:アクセスが拒否されたため、
\\\actualPhysicalServerName\PDFsDirectory\web.config
への変更の監視を開始できませんでした。at System.Web.FileChangesMonitor.FindDirectoryMonitor(String dir, Boolean addIfNotFound, Boolean throwOnError) at System.Web.FileChangesMonitor.StartMonitoringFile(String alias, FileChangeEventHandler callback) at System.Web.Configuration.WebConfigurationHost.StartMonitoringStreamForChanges(String streamName, StreamChangeCallback callback) at System.Configuration.BaseConfigurationRecord.MonitorStream(String configKey, String configSource, String streamname) at System.Configuration.BaseConfigurationRecord.InitConfigFromFile()
アプリケーションプールを再起動しても役に立ちません。 IISを再起動する必要があります。 IISが再起動されると、仮想ディレクトリに期待どおりにアクセスできます。
これは予想される動作ですか?仮想ディレクトリを正しく設定していませんか?
IIS 7.5、Windows 7サーバー、および.NET4.5を使用しています。
私はこの問題を次のように解決しました:
同じ問題に不満を感じている他の人にとっては、問題の核心は見つかりませんでしたが、この問題はWebサイトが実行されているアプリケーションプールのIDに関連していることがわかりました。
私の場合、解決策は、アプリプールIDをApplicationPoolIdentityビルトインアカウントから、関係するすべてのマシンの管理者であるカスタムアカウントに変更することでした。
これをする
UNC共有上のイメージを指す仮想ディレクトリがありました。親アプリを.NET4.5に更新するまで、すべて正常に機能していました。
VirDirを4.0統合アプリケーションプールを備えた仮想アプリケーションに変換する必要がありました。
古いトピックですが、次の手順に従って解決できました 手順 (基本的にASPNETとIUSRをアクセス許可に追加します:
Windowsエクスプローラーで、アプリケーションフォルダーまたはコンテンツを含む仮想ディレクトリ(たとえば、c:\ inetpub\wwwroot\xx)を参照します。
フォルダを右クリックし、[プロパティ]をクリックします。
[セキュリティ]タブで、[追加]をクリックします。
[ユーザーまたはグループの選択]ウィンドウで、[詳細]をクリックします
[今すぐ検索]ボタンをクリックすると、ユーザーのリストが表示されます
ASPNETとIUSR_(machinename)を選択し、[OK]をクリックして[ユーザーまたはグループの選択]ウィンドウを閉じます。
ASPNETおよびIUSR_(machinename)アカウントに次のアクセス許可を許可します。
-読み取りと実行-フォルダコンテンツの一覧表示-読み取り