起動時に一部の構成を読み取るためだけに使用される App_Data に格納された XML ファイルがあります。コード内で開こうとすると、「パスへのアクセス ... が拒否されました」というメッセージが表示されます。
その理由と解決方法を理解するのに苦労しています。理論的には、ファイル (およびディレクトリ) のアクセス許可を変更する必要があると思いますが、何も変更されていません。
もう少し背景を説明するには: 1. プロジェクトにバンドルされているファイルであるため、VS2008 によって作成されたセットアップによって、インストール中に正しい場所に書き込まれます。ASP.NET アプリケーションがアクセスできるように、インストール後に異常なことを行う必要はないと思いました。2.これをローカルで公開しようとしたとき、問題はありませんでした。- これはテスト用の Windows 2003 サーバーのみです。3. IIS の有効なユーザーを理解するための簡単なページを実行しました。これは NT AUTHORITY\NETWORK SERVICE です。このユーザーにこのファイルへの「フル アクセス」を許可しようとしましたが、それでも機能しません。
それを開くコードは簡単です。
FileStream fs = new FileStream(Server.mapPath(s), FileMode.Open);
s は '~/App_Data/myfile.xml として定義されます
フルパスとファイル名を(例外から)コピーして貼り付け、「dir」を試してみましたが、実際に存在しています(たとえば、タイプミスを回避するため)。
また、いくつかの提案に従って aspnet_regiis.exe /s を実行してみました。
これは私を困惑させました。