web-dev-qa-db-ja.com

パス 'c:\ inetpub \ wwwroot \ myapp \ App_Data'へのアクセスが拒否されました

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があります(通常、{MACHINE}\ASPNET on IIS 5またはNetwork Service on IIS 6)は、アプリケーションがアプリケーションがを介して偽装している場合、IDは匿名ユーザー(通常はIUSR_MACHINENAME)または認証された要求ユーザーになります。

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

ソースエラー:

70行目:保護されたサブ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アカウントを強調表示し、目的のアクセスのボックスをオンにします。

しかし、エラーは続きます。

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

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

[〜#〜] edit [〜#〜]

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

ありがとう。

13
Smith

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

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

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

12
Niranjan Singh

免責事項:wwwrootのパーミッションの変更は 危険で恐らく悪い考え です。

代わりに、wwwroot以外の場所にファイルを保存することを検討してください。アプリを使用せずにファイルを提供する必要がある場合は、inetpubのフォルダーoutsideに保存し、 仮想ディレクトリ を使用しますそれらをIISから見えるようにします。

元の回答:


IIS Windows Serverの場合:

デフォルトでは、IISユーザーはwwwrootフォルダーへの書き込み権限を持っていません。これは、wwwrootIIS_IUSRSユーザーに完全な権限を付与することで解決できます。

  1. エクスプローラーを開き、C:/inetpub/に移動します
  2. Wwwrootを右クリックし、「プロパティ」をクリックします
  3. [セキュリティ]タブに移動し、[編集...]をクリックして権限を編集します
  4. IISユーザー。私の場合、IIS_IUSRS ([server name]\IIS_IUSRS)と呼ばれていました。
  5. すべての権限に対して「許可」チェックボックスを選択します。
13
Joshua Wade

ファイルが読み取り専用の場合、追加のパラメーターがFileStreamに役立つ場合があります

using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read))
4
KenF

私はすべての許可でASP.net v4.0を追加しようとしましたが、NETWORK SERVICEユーザーを追加しましたが、何も助けません。最後に、App_DataフォルダーにDefaultAppPoolユーザーの変更権を追加し、問題を解決しました。

1
Tin

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

1
Jim Wilcox

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

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

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

1
Shawn Lehner

別の理由としては、書き込みを行おうとしているファイルパスが空であることが考えられます。これが見つからない理由です。このエラーが発生する別の理由。

0
Bilal

管理者特権でVisual Studioを実行してください。この問題は解決されました。

パスへのアクセスは拒否されますC:\ inetpub\wwwrootは、セルフサービスWebサイトがインストールされているサーバー上の特定のフォルダーにアクセスできないことを示します。これは、場所が存在しないか、認証ユーザーにこの場所への書き込みに適用されるアクセス許可がないためです。

0
Shibu Thomas

NETWORK SERVICEユーザーに許可を与えてみてください。

0
Hiber