権限が不十分なため、構成ファイルを読み取れません


352

最近、asp.netサイトをIISでホストしようとしてエラーが発生しました。私は多くの人が誓う解決策を見つけました。

解決:

  1. フォルダー内のファイルに対する読み取りアクセス許可を持つIIS_IUSRSを追加する
  2. IIS認証方法をBasicAuthenticationに変更する
  3. ウェブサイトを更新します。それが動作します

http://vivekthangaswamy.blogspot.com/2009/07/aspnet-website-cannot-read.html

しかし、web.configファイルに何を追加しますか?以前に編集する必要はありませんでした。現在の内容は次のとおりです。

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
    <connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
   providerName="System.Data.SqlClient" />
 </connectionStrings>
 <system.web>
  <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    </system.web>
</configuration>

私のエラーは:

構成エラー:アクセス許可が不十分なため、構成ファイルを読み取れません
構成ファイル:\?\ C:\ Users ***** \ Documents \ Visual Studio2010 \ WebSites \ PointsForTime \ web.config


9
インストール書き換えモジュールをご覧ください。数時間節約
regisbsb

私の解決策は、管理者権限で開いたコマンドラインからコマンドを実行することです。これを行うには、コマンドプロンプトを見つけて右クリックし、[管理者特権で実行]をクリックします。
David Waddington、2016

他の回答に加えて、暗号化ファイルシステム(EFS)もIISに干渉する可能性があることに注意してください。
G-Wiz 2016

私は、この広告は現在、ローカルホストがパスワードを要求されていた最も近い私はこの作業のおかげで、これまでに取得してきた
ポール元帳

1
私にとってIIS_IUSRはありませんでした。認証されたユーザーに対しても同じことを行い、それは機能しました
Bhanu Chhabra

回答:


543

web.configに問題はありません。Webサイトはプロセスの下で実行されます。iisでは、そのプロセスのIDを定義できます。アイデンティティあなたのウェブサイトのことをアプリケーションプールとして動作します(ネットワークサービス、ローカルシステムなど)は、アクセス許可を持っているし、web.configファイルをお読みください。

更新:

この更新された回答は上記と同じですが、少し長くてシンプルで改善されています。

まず、設定ファイルを変更する必要はありません。大丈夫です。問題は、Windowsファイルの権限にあります

この問題は、アプリケーションweb.configファイルにアクセスして読み取ることができないために発生します。

IIS_IUSRSグループがファイルにアクセスできるようにします。ちょうど右web.configファイルをクリックしてクリックプロパティの下、セキュリティの追加、タブIIS_IUSRSを

では、このIIS_IUSRSとは何でしょうか。

あなたのウェブサイトexeファイルのようなものです。他のexeファイルと同様に、ユーザー開始する必要があり、そのユーザーに割り当てられた権限に従って実行されます。

IISでサイトを起動すると、Webサイトのアプリケーションプールユーザーネットワークサービス、ローカルシステムなど)に関連付けられます(IISで変更できます)。

したがって、IIS_IUSRSとは、サイトを実行しているすべてのユーザーネットワークサービス、ローカルシステムなど)を意味します。

そして、以下のコメントで@Sephが言及しているようにコンピューターがドメイン上にある場合、IIS_IUSRSグループがローカルグループであることを覚えておいてください。また、このユーザーを見つけようとしているときに、場所が企業ドメインではなくローカルコンピュータに設定されていることを確認してください。


79
他の人にとっては、デフォルトが通常でIIS_IUSRSあり、このユーザーを見つけようとしているときに、場所が企業ドメインではなくローカルコンピュータに設定されていることを確認することを確認することは重要です。
Sep

3
良い答えです。ここに追加のヒントがあります。ドメインのWin7でIIS7を実行している場合、「名前の確認...」で検索すると、ローカルグループにIIS_IUSRSが見つからない場合があります。心配する必要はありません。IIS_IUSRSと完全に入力して[OK]をクリックするだけで、すべて正常に動作します。
Eight-Bit Guru

2
サイトのパス用の共有ドライブがある場合はどうなりますか?これは効果がありますか?共有ドライブでこれをどのように機能させますか?
ケビン

2
私はIUSRのためにこれをしなければなりませんでした。IIS_IUSRSが何らかの理由で動作しませんでした。
トッド

13
このスレッドで説明されているエラーを修正したら、IIS 7以降で新しいASP.Net Webサイトを最初からセットアップしようとすると、次のハードルとして認証エラー "HTTPエラー401.3-未承認"に直面する可能性があります。匿名認証を有効にしている場合にこれを修正するには、匿名ユーザーIDを「IUSR」(IISによってデフォルトとして設定)からアプリケーションプールIDに変更します。この設定の編集ウィンドウを取得するには、IIS機能ビューの[認証] IIS機能の[操作]ウィンドウから[編集]アクションを使用します。
RBT、2014

71

私はweb.configファイルに対する同じ権限の問題であるように見えたものを持っていました。
ただし、私の問題は、URL書き換えルールが含まれていて、IIS URL書き換えモジュールを新しいサーバーにインストールしていなかったため、IISが設定ファイルを読み込めなかったことが原因でした。

解決策:書き換えモジュールをインストールします。
誰かが数時間節約できることを願っています。


うん。これを使用した以前のサーバーは、SSL以外のルートをsslに書き換えました。error::) +1 SSLを要求する代わりに、誰かがhttpsなしでリンクされた場合に備えて、URLをHTTPSに書き換えました。難問ですね。
Piotr Kula

ありがとうございました!!!何時間もパーミッションに悩まされていて、結局これにかかっていました!
カールウッドハウス

IIS URL書き換えモジュールをインストールするにはどうすればよいですか?
B.クレイシャノン

2
これも私の問題でした-ありがとう!書き換えモジュールをインストールするには、このページからダウンロードします。iis.net / downloads / microsoft / url-rewrite IISを閉じ、インストールし、IISを再起動します(念のため)。
タイラーフォーサイス2017

2
@ B.ClayShannonがWebプラットフォームインストーラーを使用して、IIS Rewriteを検索
enorl76

64

編集者注:この答えが言うことを行うことは危険です!LocalSystemアカウントは...

管理者アカウントよりも完全に信頼されたアカウント。このアカウントでは実行できない単一のボックスには何もありません。また、マシンとしてネットワークにアクセスする権利があります(これには、Active Directoryが必要で、マシンアカウントに何かの権限を付与する必要があります)。


IdentityをApplicationPoolIdentityからLocalSystemに変更すると、作業が完了しました;)。

IIS 7.5でwin7 64を使用しています

IIS 7.5およびWin 7のアプリケーションプールIDの詳細

ここに画像の説明を入力してください


IIS 6にも役立つ回答です。ここでは、MicrosoftのWebサイトでアプリケーションプールIDを変更する方法についての詳細は見つかり:microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/...
マヌエル・アルバレス

22
この変更を行うことは、このサービスに許可しているアクセスのため、セキュリティリスクになります。msdn.microsoft.com
us

これは私のここでの問題であると思われ、アプリケーションプールIDをLocalSystemに変更すると、説明どおりに機能しました
Vasily Hall

21
サーバーに残されたセキュリティホールのギャップのため、これに反対票を投じます。ローカルシステムアカウントでIISのような公開サービスを実行しないでください!!!! あなたは基本的に、サーバーをハッキングできる人のために、王国に鍵を渡します。真剣にこれを行わないでください。
Dimesio 16

5
OMGこの答えは、セキュリティに関しては正しくありません。適度な介入が必要です。これは恐ろしい考えです。クエリ文字列で指定されたすべてのファイルアクセスを想像してみてください。この回答は使用しないでください。
enorl76 2017年

47

サイトのルートフォルダーを別のユーザーと共有しようとしたときにも、同じ問題が発生しました。一部のフォルダは権限を失いました。そこで、Afshin Ghの提案に従ってIIS_IUSRSグループにアクセス許可を追加する手順を実行しました。問題は、このグループが私には利用できなかったことです。Windows 7を使用しています。

私がしたことはいくつかのステップを変更しただけです:

  1. (権限を失った)親フォルダを右クリックし、
  2. プロパティ=>セキュリティ=>「グループ名またはユーザー名:」では、
  3. [編集...]をクリックします
  4. 「フォルダへのアクセス許可」ウィンドウが開きます。
  5. [グループ名またはユーザー名]で、ADD ... btnを押します。
  6. Authenと入力し、名前の確認を押します。
  7. 完全なグループ名「Authenticated Users」が表示されます
  8. ok =>適用を押します。
  9. これにより、特権が再び有効になります。

それでうまくいきました。


2
これでうまくいきました。これは受け入れられる答えになるはずです。他の方法を試しましたが、うまくいきません。
GunWanderer 2017

1
他のすべてのソリューションを試したところ、これまでは機能しませんでした。
jenna_3108

1
さて、私はこれがなぜ機能するのについての説明があると思います 一部の開発者は、C:\ ie C:\DevまたはC:\Codeなどでコードをホストします。セキュリティグループAuthenticated Usersはで付与され、C:\ 子フォルダに伝播されます。ただし、C:\Usersフォルダーでは、この伝達は停止します。したがって、ホームフォルダー内でコードをホストする私のような開発Authenticated Users者は、IISが機能するために、それらのIISルートフォルダーへのアクセスを許可する必要があります。
コリン

[名前の確認]をクリックすると、資格情報が要求されます。ここでどのユーザー資格情報が予期されているかわかりません。
RSB

18

web.configを変更する必要はありません。

問題はファイルシステムの権限です。ファイルのアクセス許可では、IIS_IUSRSユーザーはweb.config(またはおそらくファイルのいずれか)にアクセスできません。IIS_IUSRSアカウントがアクセスできるように、ウィンドウでファイルのアクセス許可を変更します。


1
同様の問題がありました。IIS_IUSRSユーザーが見つからない場合は、場所を確認してください。鉱山はデフォルトで企業ドメインになっていたので、どこを探しているのか確認するのを忘れていたので、すぐには見つかりませんでした。
jgreep

@Mystere Man同じ問題があります。権限を変更して試してみました。それでも同じエラーが発生します。:(
Rauf

「(またはおそらくファイルのいずれか)」は私にとっては機能し、IIS_IUSRSアカウントにweb.configへのアクセスを許可するだけでは不十分です。サイト内のすべてのファイルにアクセスできるようにする必要があります。
Tuyen Nguyen 2013

2
私はIUSRのためにこれをしなければなりませんでした。IIS_IUSRSが機能しませんでした。
トッド

ありがとう。「Everyone」にWebアプリフォルダーに対する完全なアクセス許可を付与しましたが、機能します。
Minh Nguyen

16

IIS_IUSRSグループがファイルにアクセスできるようにします。web.configを右クリックして[プロパティ]を展開し、[セキュリティ]タブでIIS_IUSRSを追加します。グループに読み取り/書き込みアクセス権を付与します。

グループが使用できない場合は、IIS_IUSRSをComputerName \ IIS_IUSRSに置き換えます


+1良いヒント。受け入れられた答えは良いですが、「IIS_IUSRS」の前にコンピュータ名を追加する必要があるかもしれないことを無視しています。
Ralph Lavelle 2016

これ(「グループが利用できない場合」)は期待通りでしたが、コンピューター名( "IBM-TAMMYFAYEBAKER.platypus.local \ IIS_IUSRS")を付加しても同じエラーが発生します。フルコンピュータ名も試してみましたが、それを有効なユーザーとして受け入れることさえできませんでした。
B.クレイシャノン

15

親フォルダに移動し、右クリックして[ プロパティ ]を選択します。[ セキュリティ ]タブを選択し、権限を編集して[ 追加 ]をクリックします。[ 詳細設定]と[ 今すぐ検索]をクリックします。選択IIS_IUSRSをクリックし、[OK][OK]をもう一度。[ 書き込み]がオンになっていることを確認してください。クリックして、[OK][OK]をもう一度。

仕事完了!


19
必要なのが読み取りだけの場合に、書き込みアクセスを推奨するとはどういうことですか?/ downvoted
TristanK

2
私が持っている唯一のIIS *はIIS_WPGです
B.クレイシャノン

1
@ B.ClayShannon私も。私はIIS_WPGしか持っていません
Fortune

13

IIS_IUSRSにアクセス許可を付与するときは、WebアプリケーションのIIS /認証セクションで、匿名認証の資格情報がIUSRではなくアプリケーションプールIDを使用していることを確認する必要があります。

ここに画像の説明を入力してください


このインターフェイスはどこで入手できますか?

Webアプリケーションの[機能ビュー]タブ:認証
Carlos

この回答は、承認された回答の原因の一部である必要があります。これがないと、ウェブサイトのフォルダーのアクセスリストにIUSRを追加する必要があります
Laurent S.

7

何らかの理由で、web.configが読み取り専用に設定されています。web.configファイルの読み取り専用オプションをオフにします。


許可がフルアクセスであり、それでもエラーが発生する場合は、これが正解です(y)。
Vasil Valchev 2018年


4

チームの他の開発者と同じ設定を維持するために、substを使用してD:からC:へのマッピングを作成しました。これでも、説明と同じエラーが発生しました。これを削除することで修正されました。


3

受け入れられた解決策は私には役に立ちませんでした。私はGitリポジトリを使用し、次のフォルダーに複製しました

c:\users\myusername\source\repos\myWebSite

新しいIIS Webサイトを作成し、それをパスに向けました。承認されたソリューションで提案されているiis_iusrs権限を持っていなかったもの。権限を追加したとき、それでも機能しませんでした。

'Users'グループに次のアクセス許可を与え、継承がweb.configへのアクセス許可をカスケードしたときにのみ機能し始めました。おそらく、攻撃対象領域を減らすために、web.configにのみ適用する必要がありました。

ユーザー権限


まったく同じ状況でした。これは役に立ちました。
Roemer

2

apppoolで特定のIDを使用してWebサイトを実行しましたが、web.configを含むフォルダーへの読み取りアクセスをそのユーザーに付与した後にのみ、機能します。私たちは、読み取りを行う「全員」ユーザーを追加した後、これを追跡し、すべてが正常に機能しました。


2

私にとって、ローカルマシンでのデバッグ中にエラーが発生し、Webサイトのコンパイル時に.NET Frameworkによって開始された基本のweb.configに関連していることが判明しました。C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.configファイルに、認識されない要素(folderLevelBuildProviders)がありました。これを修正すると、500.19エラーが修正されました。

これを参照してください:IISマネージャーは.NET 4アプリケーションで.NETコンパイルを構成できません


2

プロセスモデルIDをLocalSystemに変更すると、この問題が修正されました。アプリケーションプールを右クリックして[詳細設定]を選択すると、この設定を見つけることができます。IIS 7.5を実行しています。


2

Web.Configを右クリック=>タブセキュリティ=>ボタン編集=>ボタン追加=>ボタン詳細=>ボタン今すぐ検索=>検索結果でグループを選択します(この場合は "IIS_IUSRS")=> Ok => Ok => OK


2

これは、バックスラッシュではなくスラッシュを含む物理パスを持つ仮想ディレクトリIISアプリケーションにあるときに発生しました。これは、継続的デリバリープロセス中にIISのpowershell管理APIを使用して誤って行われました。/\

悪い設定例- applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite/MyService" />
</application>

physicalPath属性に/バックスラッシュのみが含まれていることを確認してください。\

構成例を修正- applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite\MyService" />
</application>

1
私の場合、物理パスには二重のバックスラッシュがありましたC:\inetpub\MySite\\MyService。単一のバックスラッシュに変更すると効果的
ベンアンダーソン

2

アプリケーションプールユーザー(WIN SERVER 2008 R2)のフォルダーに読み取り権限を追加することでこれを解決しました:C:\ Windows \ System32 \ inetsrv \ config

少し背景:私たちのサーバーは古典的なエラーを使用してハッキングされており、アプリのユーザーが必要とするより多くの権限を持っています(ローカル管理者)。

これを修正するために、アプリケーションフォルダーに対する権限のみを持つ新しいドメインユーザーを作成し、必要な権限を最低限にして、アプリケーションプールユーザーとして割り当てました。私たちが問題にぶつかったよりも、これは私たちの問題の解決策でした。


2

プロジェクトをC以外のドライブにシフトします。同じエラーで私のために働きました。


2

これは、アプリケーションが仮想ディレクトリにあり、ファイルへのパスがマップされたドライブである場合に発生する可能性があります。

ファイルへのパスをローカルドライブに変更すると、本当に問題が解決します。


2

与えられたすべての回答は有効であり、さまざまな状況で機能します。

私にとっては、Visual Studioの再起動が機能しました。


1

上記の回答は役に立ちましたが、これが誰かを助ける場合に備えて-私はこの正確な問題を抱えており、サイトのホスト元であるルートフォルダーを(Windowsネットワークで)共有していることがわかりました。共有を強制終了し、ユーザーに読み取り/実行権限を追加したところ、問題なく動作しました。

共有がそれを台無しにしたのではないかと思います。


0

「権限が不足しているため、設定ファイルを読み込めません」も受信していました。ASP.NET 4.0 32ビットと64ビットの両方に対するIISのISAPIおよびCGI制限が拒否されるように設定されていることが判明しました。両方を許可にマークすると、問題が解決しました。


0

仮想アプリケーションでこの問題が発生しました。すべての権限が設定されました。IIS_IUSRS、AppPoolIdentityを使用して、Everyoneに完全なアクセス権を付与しました。何もうまくいきませんでした。アプリプール、サイト、IISを再起動しましたが、できません。

仮想アプリケーションを削除し、最初から再度追加すると、機能し始めました。

何がそれを解決したのか知っていればいいのに。


0

IIS_IUSRS権限にもかかわらず、同じメッセージが表示されるにもかかわらず、ファイルが読み取り専用としてマークされていないかどうかを確認します。


0

このエラーメッセージは、ローカルドライブではなくネットワークドライブに物理フォルダーが配置されていることが原因であることがわかりました。このようなドライブのアクセス許可は、デフォルトでは異なる場合があります。たとえば、ローカルドライブの場所はローカルコンピュータのユーザーに許可を与えましたが、ネットワークの場所は許可しませんでした。

さらに、そのような場合、受け入れられた回答は機能しません。ローカルユーザーまたはIISユーザーは、アクセス許可を割り当てることができませんでした。解決策は、物理フォルダーをローカルドライブに移動することでした。


0

私は同じ問題を抱えていて、ここに書かれていることすべてを回答として行った後でも、それは再現されました。問題の後半は、「Windowsの機能をオンまたはオフにする」で.NETがオフになっていたという事実でした。


0

新しいサーバーの場合は、IISでASP.NET機能を構成またはインストールして、web.configファイルを読み取れるようにする必要があります。

私の場合、これが理由でした。


0

私の場合、マップされたドライブ(subst)からページをホストしようとしていました。問題は、substが私のアカウントで実行され、IISユーザーが同じドライブを表示できないことです


0

私は許可を与え、ICACLS.exeを使用しましたが、機能しませんでした。次に、物理パスを変更しましたが、正常に機能しました。

(IIS 8.5 Windows 2012 R2)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.