web-dev-qa-db-ja.com

IIS仮想ディレクトリのアクセス許可を忘れています-構成ファイルの読み込み中にエラーが発生しました:変更の監視を開始できませんでした

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を使用しています。

8
dedgod

私はこの問題を次のように解決しました:

  1. 「マネージコードなし」と「クラシック」設定で新しいプールを作成しました。
  2. 仮想ディレクトリをアプリケーションに変換し、共有の権限を持つユーザーアカウントに接続します
  3. アプリケーションに新しいプールを使用させる
13
mabian69

同じ問題に不満を感じている他の人にとっては、問題の核心は見つかりませんでしたが、この問題はWebサイトが実行されているアプリケーションプールのIDに関連していることがわかりました。

私の場合、解決策は、アプリプールIDをApplicationPoolIdentityビルトインアカウントから、関係するすべてのマシンの管理者であるカスタムアカウントに変更することでした。

これをする

  • IISのアプリケーションプールを右クリックし、[詳細プロパティ]を選択します。
  • [ProcessModel]-> [Identity]で、[Identity]を選択します。カスタムアカウントを選択します(ビルトインアカウント、アプリケーションプールIDはIIS 7.5)のデフォルトです)
  • このマシンの管理者であるカスタムドメインアカウントと、仮想ディレクトリがホストされているマシンの使用に切り替えます。
    • アプリケーションプールを再起動します。
9
dedgod

UNC共有上のイメージを指す仮想ディレクトリがありました。親アプリを.NET4.5に更新するまで、すべて正常に機能していました。

VirDirを4.0統合アプリケーションプールを備えた仮想アプリケーションに変換する必要がありました。

1
gbs

古いトピックですが、次の手順に従って解決できました 手順 (基本的にASPNETとIUSRをアクセス許可に追加します:

  1. Windowsエクスプローラーで、アプリケーションフォルダーまたはコンテンツを含む仮想ディレクトリ(たとえば、c:\ inetpub\wwwroot\xx)を参照します。

  2. フォルダを右クリックし、[プロパティ]をクリックします。

  3. [セキュリティ]タブで、[追加]をクリックします。

  4. [ユーザーまたはグループの選択]ウィンドウで、[詳細]をクリックします

  5. [今すぐ検索]ボタンをクリックすると、ユーザーのリストが表示されます

  6. ASPNETとIUSR_(machinename)を選択し、[OK]をクリックして[ユーザーまたはグループの選択]ウィンドウを閉じます。

  7. ASPNETおよびIUSR_(machinename)アカウントに次のアクセス許可を許可します。

    -読み取りと実行-フォルダコンテンツの一覧表示-読み取り

0
G .