web-dev-qa-db-ja.com

権限が不十分なため、設定ファイルを読みません

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

溶液:

  1. フォルダ内のファイルに対する読み取り権限を持つIIS_IUSRSを追加します。
  2. IIS認証方法をBasicAuthenticationに変更します。
  3. webサイトを更新します。それが動作します

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 Studio 2010\WebSites\PointsForTime\web.config

307
Freesnöw

あなたのweb.configでは問題ありませんがあります。あなたのウェブサイトはプロセスの下で運営されています。 IISでは、そのプロセスのIDを定義できます。 identity、つまりあなたのWebサイトのアプリケーションプールは(ネットワークサービス、ローカルシステムなど)...のように実行され、Webにアクセスして読む権限が必要です。設定ファイル.

更新:

この更新された答えは上記と同じですが、もう少し長く簡単で改善されたものです。

まず第一に:あなたはあなたの設定ファイルの中で何かを変更する必要はありません。 大丈夫です。問題はwindows file permissionsにあります。

この問題はアプリケーションアクセスおよびweb.configファイルを作成できないために発生します。

ファイルをIIS_IUSRS groupにアクセス可能にします。 web.configをクリックしてプロパティをクリックし、セキュリティタブの下にIIS_IUSRSを追加します。

それでは、このIIS_IUSRSとは何ですか?

あなたのウェブサイトexeのようなファイルです。他のexeファイルと同じように、それはユーザーによって開始されたであるべきで、それはそのユーザーに割り当てられたパーミッションによるを実行します。

あなたのサイトがIISで開始されると、あなたのWebサイトのアプリケーションプールユーザー_(ネットワークサービス、ローカルシステム、など...(およびIISで変更できます)

ですから、あなたがIIS_IUSRSと言うとき、それはあなたのサイトが実行されていることを意味する任意のユーザー_(ネットワークサービス、ローカルシステムなど)...を意味します。

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

498
Afshin Gh

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

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


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

Win7 64をIIS 7.5とともに使用しています

IIS 7.5のアプリケーションプールIDと7の勝利

enter image description here

65
amd

私はweb.configファイルの同じ権限問題と思われるものを持っていました。
しかし、私の問題はIISが設定ファイルのロードに失敗したことが原因で発生しました。これにはURL書き換えルールが含まれており、新しいサーバーにIIS URL書き換えモジュールがインストールされていません。

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

57
Jarrod

サイトのルートフォルダを他のユーザーと共有しようとしたときに同じ問題が発生しました。いくつかのフォルダが権限を失いました。だから私はAfshin Ghが提案したように IIS_IUSRS グループにパーミッションを追加するためのステップに従った。問題はこのグループが私には利用できなかったことです。私は窓7を使っています。

私がしたこと私はちょうどいくつかのステップを変更しました:

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

それは私のために働いた。

30
zwitterion

あなたはあなたのweb.configで何も変更する必要はありません。

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

17

ファイルをIIS_IUSRSグループにアクセス可能にします。 web.configを右クリックしてプロパティを展開し、セキュリティタブの下にIIS_IUSRSを追加します。グループに読み取り/書き込みアクセス権を与えます。

グループがNOT使用可能な場合は、IIS_IUSRSをComputerName\IIS_IUSRSに置き換えます。

14

親フォルダに移動して右クリックし、 プロパティ を選択します。 セキュリティ タブを選択し、権限を編集して 追加 をクリックします。 詳細 および 今すぐ検索 をクリックします。 IIS_IUSRS を選択し、再度 _ ok _ および _ ok _ をクリックします。必ず Write をチェックしてください。 _ ok _ および _ ok _ をもう一度クリックします。

仕事は終わった!

14
Quinny

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

enter image description here

11
Carlos

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

6
Luis

私は(他の人が示唆しているように、ISS-IUSRSに加えて)IUSRにパーミッションを追加する必要がありました。 (また参照してください: http://codeasp.net/blogs/raghav_khunger/Microsoft-net/2099/iis-7-5-windows-7-http-error-401-3-unauthorized

5
coberlin

チームの他の開発者と同じ設定を保つためにsubstを使用してD:からC:へのマッピングを作成しました。これも私に説明と同じエラーを与えた。これを削除して私のためにそれを修正しました。

3
Sniipe

Web.configファイルが読み取り専用になっていないことを確認してください。

1
Oranit Dar

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

1
jshoaf

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

1
Talha Imam

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

ファイルへのパスをローカルドライブに変更しても、それが問題ないのであれば、これで解決します。

1
UKcentric

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

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

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

1
ludens

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

私にとっては、Visual Studioの再起動はうまくいきました。

1
Doruk

承認された解決策は私には無かった。 Gitリポジトリを使用して次のフォルダにクローンしました

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

私は新しいIIS Webサイトを作り、それをパスに向けました。承認されたソリューションで提案されているiis_iusrs権限がありませんでした。権限を追加してもまだ動作しませんでした。

それは私が 'Users'グループに次の許可を与え、継承がweb.configへの許可をカスケードしたときにのみ働き始めました。おそらく攻撃対象領域を減らすためにweb.configだけにそれを適用するべきでした。

User Pemissions

1
Tom McDonald

そのユーザーにweb.configを含むフォルダーへの読み取りアクセス権を付与した後にのみ、そのアプリケーションプールで特定のIDでWebサイトを実行していました。 readを使用して「Everyone」ユーザーを追加した後、これを追跡しましたが、すべてうまくいきました。

1
rob

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

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

1
Rafael Emshoff

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

Webを右クリック=>タブセキュリティ=>ボタン編集=>ボタン追加=>ボタン詳細=>ボタン今すぐ検索=>検索結果であなたのグループを選択してください(この場合は "IIS_IUSRS")=> Ok =>わかりました=>わかりました

1
Igor Levkivskiy
  1. IISに行く(サイト)
  2. サイト内のプロジェクトを右クリックします。 ここに画像の説明を入力します

そして編集許可をクリックしてください。

  1. セキュリティに行きます。

  2. 編集ボタンをクリックしてください。

  3. 追加ボタンをクリックします。 COMPUTER_NAME\IIS_USERSと入力します。

    または

  4. 進むをクリックします。

  5. 今すぐ検索ボタンをクリックします。

    そして選択するオプションがあります。 IIS_USERSを選択して[OK]をクリックし、[OK]をクリックします。

0
subash adhikari

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

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

0
SanthoshM

許可を与えてICACLS.exeを使用しましたが、動作しませんでした。それから私は物理的なパスを変えて、それはうまくいった。

(IIS 8.5 windows 2012 R2)

0
Adem Aygun

私は以前の提案のほとんどを試したが無駄だった。ウェブサイトをリロードできないので、.csprojファイルを編集してポート番号を変更したところ、すぐに動作しました。

 <WebProjectProperties>
      <UseIIS>True</UseIIS>
      <AutoAssignPort>True</AutoAssignPort>
      <DevelopmentServerPort>**4000**</DevelopmentServerPort>
      <DevelopmentServerVPath>/</DevelopmentServerVPath>
      <IISUrl>http://localhost:**4000**/</IISUrl>
      <NTLMAuthentication>False</NTLMAuthentication>
      <UseCustomServer>False</UseCustomServer>
      <CustomServerUrl>
      </CustomServerUrl>
      <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
    </WebProjectProperties>

.csprojファイルを編集しています

0
Ramadan Alrai

また、「権限が不十分なため、構成ファイルを読み取れません」というメッセージが表示されました。 ASP.NET 4.0 32ビットと64ビットの両方でIISのISAPIおよびCGIの制限が拒否に設定されていることが判明しました。両方を許可にマークすると問題が解決しました。

0
Earl

iIS_IUSRSの許可があるにもかかわらず、ファイルに 読み取り専用 のマークが付いていないかどうかを確認してください。同じメッセージが表示されます。

0
Syed Umar Ahmed

私はこれと同じ問題を抱えていたし、これらの解決策のどれも私のために働かなかった。イベントビューアで同じエラーと「変更の監視を開始できませんでした」に関するエラーが表示され続けました。

機能した唯一のことは、フォルダをコピーして名前を変更することでした。それはIIS/ASP.NETがアクセスできないWindowsの破損したフォルダであったにちがいありません。

0
Trent U

私はlocalhost/MyAppで構築され、Visual Studioを通して運営されているウェブサイトを運営していました - Visual Studio自身によって作成された仮想ディレクトリを通して。

私にとっての「解決策」は、仮想ディレクトリを削除してVisual Studioに再作成させることでした。

0
WernerCD

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

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

0
Kat

私は同じ問題を抱えていて、答えとしてここに書かれたすべてのものをした後、それはまだ再現しました。問題の後半は、「Windowsの機能の有効化または無効化」で.NETが無効になっていたことです。

0
Bogdan Mates

確かに、これは権限に関する問題です。私は以下のステップを踏みました、そしてそれは私のために働きました。

  1. あなたのウェブサイトまたはアプリケーションを左隅で選択してください。ほとんどの場合、 デフォルトのWebサイト の下にあります。
  2. IIS Manager 7以降の右上隅にある 基本設定 をクリックします。
  3. をクリックして として接続します。
  4. " 特定のユーザー "を使用して、設定ボタンをクリックしてください。
  5. ユーザー名とパスワードを入力してください。 ドメイン\ユーザー名 のように。私にとっては、ABC\rrajkumarのようでした、パスワードを入力してください。
  6. iISを再起動し、Webサイトを閲覧します。今動作するはずです。
0
CredibleAshok

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

0
Dinesh Rajan

この問題は、microsoftaccount\[email protected]アカウントを使用して、App PoolでWindows 10上で実行していました(たとえば、ローカルアカウントではなくMicrosoftアカウントでPCにサインインしてください)。

どうやら私のコンピュータ上で何かが壊れてしまった。 IISを削除してから再度追加しても、何も起こりませんでした(IISメタベースは削除されなかったようです)。アプリプールを削除して再作成しても役に立ちませんでした。

私の解決策は、同じ設定で名前が異なる新しいApp Poolを作成することでした。これで問題は解決しました。明らかに何かがそれを削除し、同じ名前でそれを再追加することさえ修正されないであろうapppoolで破損しました。

0
Andy

仮想アプリケーションでこの問題が発生しました。すべての権限が設定されました。 IIS_IUSRS、AppPoolIdentityを追加し、それから全員にフルアクセスを与えました。何もうまくいきませんでした。 apppool、site、およびIISを再起動しましたが、実行されません。

仮想アプリケーションを削除して最初から追加し直したところ、動作し始めました。

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

0
gbs