22

Windows XP に IIS をインストールしました。

アプリを実行しようとすると、エラーが発生します。

パス 'c:\inetpub\wwwroot\myapp\App_Data' へのアクセスが拒否されました。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.UnauthorizedAccessException: パス 'c:\inetpub\wwwroot\myapp\App_Data' へのアクセスが拒否されました。

ASP.NET は、要求されたリソースへのアクセスを許可されていません。リソースへのアクセス権を ASP.NET 要求 ID に付与することを検討してください。ASP.NET には、アプリケーションが偽装していない場合に使用されるベース プロセス ID (通常、IIS 5 では {MACHINE}\ASPNET、IIS 6 ではネットワーク サービス) があります。アプリケーションが を介して偽装している場合、ID は匿名ユーザー (通常は IUSR_MACHINENAME) または認証された要求ユーザーになります。

ファイルへの ASP.NET アクセスを許可するには、エクスプローラーでファイルを右クリックし、[プロパティ] を選択して、[セキュリティ] タブを選択します。[追加] をクリックして、適切なユーザーまたはグループを追加します。ASP.NET アカウントを強調表示し、必要なアクセスのボックスをオンにします。

ソース エラー:

行 70: Protected Sub cmbSettingFiles_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) ハンドル cmbSettingFiles.SelectedIndexChanged
行 71: Dim doc As XmlDocument = New XmlDocument()
行 72: doc.Load(Path.Combine(basePath, cmbSettingFiles. SelectedValue)) 行 74: Dim settingsNode As XmlNode = doc.SelectSingleNode("/settings")

ソース ファイル: C:\myapp\install\install.aspx.vb 行: 72

私はこれを行うことで許可をグレーティングしようとしました:

ファイルへの ASP.NET アクセスを許可するには、エクスプローラーでファイルを右クリックし、[プロパティ] を選択して、[セキュリティ] タブを選択します。[追加] をクリックして、適切なユーザーまたはグループを追加します。ASP.NET アカウントを強調表示し、必要なアクセスのボックスをオンにします。

しかし、エラーは解決しません。

これは私のコードと関係がありますか?

どうすればこれを解決できますか?

編集

開発マシンで問題を解決しましたが、Web サーバーでまだエラーが発生しています。

ありがとう。

4

13 に答える 13

14

App_Data フォルダのプロパティに移動して、読み取りおよび書き込み権限を持つ ASPNET ユーザーを追加してみてください

参照:
WebMail Pro の App_Data フォルダーに正しいアクセス許可を割り当てる方法 ASP.NET
APP_DATA フォルダー
ASP/ASP.NET のアクセス許可 書き込みアクセス許可を処理する最良の方法は?

問題が解決しない場合は、これらの構成ファイルを使用して、XML ファイルが別のスレッドによって開かれていないかどうかを確認してください。問題が解決しない場合は、さらに詳細を提供してください。

于 2012-04-21T07:47:04.413 に答える
6

ファイルが読み取り専用であるかどうかを検討してください。追加のパラメーターが役立つ場合がありますFileStream

using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read))
于 2013-04-24T02:33:33.610 に答える
2

私も似たような状況でした。ソースコード管理に TFS を使用しています。私が見つけたのは、チェックイン時にファイルが読み取り専用になったことです。これにより、私のサービスで上記のエラーが発生し、読み取り/書き込みが開かれました。編集のためにそれらをチェックアウトしたら。すべてがうまくいきました。サービスで読み取り専用で開くことを検討しています。実稼働サーバーに公開されれば、これは問題ではないと思います。開発環境のみ。Entity Framework を使用するサービスでも同様の問題が発生しました。.svc ファイルがチェックインされている場合、EF を使用してデータベースを更新することはできません。

于 2013-12-13T15:01:26.330 に答える
2

正しいユーザーを追加していますか? アプリケーション アプリケーション プールに設定されているユーザーを確認しましたか?

このエラーは、何らかの理由でファイルを読み取れない場合にも発生します。ファイルがロックされているか、別のアプリケーションによって使用されているなど。これは ASP.NET Web アプリケーションであるため、ファイルのロックが必要なアクションを実行していないことを確認する必要があります。一度に 1 人のユーザーのみがページに表示されることを保証できない場合を除きます。

ファイルへのアクセス方法の例を投稿できますか? ファイルの種類は何ですか?コード スニペットは、より正確な回答を得るのに役立ちます。

于 2012-04-21T03:01:20.897 に答える
2

ASP.net v4.0 をすべての権限で追加しようとしましたが、NETWORK SERVICE ユーザーを追加しましたが、何も役に立ちませんでした。最後に、App_Data フォルダーに DefaultAppPool ユーザーの MODIFY 権限を追加し、問題は解決しました。

于 2015-08-10T06:43:54.597 に答える
0

NETWORK SERVICE ユーザーに権限を付与してみてください。

于 2014-01-24T07:08:37.023 に答える
0

別の理由として、書き込みしようとしている場所のファイルパスが空であるため、ファイルが見つからないことが考えられます。このエラーが発生するもう 1 つの理由。

于 2017-03-16T05:14:50.250 に答える