IISはロックされたセクションについて文句を言います-ロックされた場所を見つけるにはどうすればよいですか?


54

私はweb.configにこのセクションがあります:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <security>
        <authentication>
            <anonymousAuthentication enabled="true" />
            <windowsAuthentication enabled="true" />
        </authentication>
    </security>
</system.webServer>

IIS7がクラッシュし、自動化セクションについて文句を言います:

Module AnonymousAuthenticationModule
Notification AuthenticateRequest
Handler StaticFile
Error Code 0x80070021
Config Errorこの構成セクションは、このパスでは使用できません。これは、セクションが親レベルでロックされている場合に発生します。ロックはデフォルト(overrideModeDefault = "Deny")であるか、overrideMode = "Deny"または従来のallowOverride = "false"を使用してロケーションタグによって明示的に設定されます。

Config Source  
   69:  <authentication>
   70:    <anonymousAuthentication enabled="true" />

したがって、これを解決する通常の方法は%windir%\system32\inetsrv\config\applicationHost.config、セクションに入り、セクションのロックを解除することです。

    <sectionGroup name="system.webServer">
        <sectionGroup name="security">
            <section name="access" overrideModeDefault="Deny" />
            <section name="applicationDependencies" overrideModeDefault="Deny" />
            <sectionGroup name="authentication">
                <section name="anonymousAuthentication" overrideModeDefault="Allow" />
                <section name="basicAuthentication" overrideModeDefault="Allow" />
                <section name="clientCertificateMappingAuthentication" overrideModeDefault="Allow" />
                <section name="digestAuthentication" overrideModeDefault="Allow" />
                <section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Allow" />
                <section name="windowsAuthentication" overrideModeDefault="Allow" />
            </sectionGroup>

(または、appcmd unlock config)。

奇妙なこと:私はそれをやったが、それでも文句を言う。

場所を探しました(MVCは、使用しているすべてのサイトのルートである私のWebサイトの名前です):

<location path="MVC" overrideMode="Allow">
    <system.webServer overrideMode="Allow">
        <security overrideMode="Allow">
            <authentication overrideMode="Allow">
                <windowsAuthentication enabled="true" />
                <anonymousAuthentication enabled="true" />
            </authentication>
        </security>
    </system.webServer>
</location>

それでも爆発する。これが起こる理由について私は困惑しています。web.configから削除できません。根本的な問題を見つけたいです。

ルールが最終的に私を拒否しているIISから特定の情報を取得する方法はありますか?

編集: IIS 7管理コンソールを使用して、ルート(マイマシン)に移動し、[構成の編集]をクリックしてセクションをロック解除することで、これを修正できました。それでも、実際に変更するファイルが見つからないため、より良い方法があるかどうかを知りたいです。


メモリからは、問題のある場所で、どのファイルを示しています500.19セクションは、下の(と思う)で、通常あります
TristanK

1
これはSOで
-paqogomez

回答:


78

私のために問題を修正するこれらのステップを解決しました:

  1. IISマネージャーを開く
  2. 左側のツリーでサーバー名をクリックします
  3. 右側のペイン、管理セクション、構成エディターをダブルクリック
  4. 上部で、セクションを選択します system.webServer/security/authentication/anonymousAuthentication
  5. 右側のペインで、セクションのロック解除をクリックします
  6. 上部で、セクションを選択します system.webServer/security/authentication/windowsAuthentication
  7. 右側のペインで、セクションのロック解除をクリックします

1
これには同等のPowerShellがありますか?これをスクリプト化できるようにしたいと思います。
ピートステンソーヌ

見つかったら、
遠慮なく

私は、他の誰かがすでに方法を知っていることを望んでいました。
ピートステンソーヌ

1
@PeteStensønesそれは持っています!>%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/security/authentication/windowsAuthentication
joacar

14

これにより、Windows Server 2012、IIS 8.5でのエラーが解決しました。他のバージョンでも動作するはずです。

  1. サーバーマネージャーに移動し、[ 役割と機能の追加]をクリックします
  2. 役割セクションで、Webサーバーを選択します。
  3. [ セキュリティ]サブセクションですべてを選択します(ダイジェスト、IP制限、およびURL承認は使用しないため除外しました)
  4. [ アプリケーション開発]で[と]を選択.NET Extensibility 4.5ASP>NET 4.5、両方のISAPIエントリ
  5. 特長のセクションを選択:NET 3.5.NET 4.5ASP.NET 4.5
  6. では、Webサーバのセクションを選択:Web Server (all)Management Tools (IIS Management Console and Management Service)Windows

5

構成のロックは次の場所で発生します。

  1. Applicationhost.config(構成文字列:MACHINE / WEBROOT / APPHOST)

  2. サイトWeb.configファイル(MACHINE / WEBROOT / APPHOST / Webサイト名)

  3. (MACHINE / WEBROOT / APPHOST /サイト名/アプリ名)のアプリweb.configファイル

セクション(セクション:IIS構成セクションなど<asp>)をロックすると、階層内で自分よりも低いレベルにいるすべてのユーザーに対してこれらの設定を構成する機能を拒否できます。

GUIの機能委任を使用することは間違いではなく、カバーの下でAppCMDが行うことと非常によく似ています- <location>フォーカスの設定レベルに関係なく、タグの特定のセクションにOverrideModeを設定します。

APPCMDはファイルのロックを解除するために使用できますが、それを実行する場所に注意してください。GUIほどスマートではありません。

追加-commit:apphostあなたの末尾にAPPCMD UNLOCKあるコマンドのターゲットのApplicationhost.config、IISの操作のためのキーファイルは、(以前のバージョンからメタベースを置き換える;店は、すべての設定を集中しかし、あなたがしなければweb.configファイルに)(上書きすることができます)。

-commit:apphostがない場合、APPCMDはweb.configファイルの最も近い論理スポットをターゲットにします-サイトまたはアプリレベルであるかどうか、および上記のセットのような構成文字列を使用して設定を変更したことを示します。(余談:サブWebサイトの設定のみをターゲットに設定できますが、apphostにコミットします-ロケーションタグを使用してそれを実現します)

したがって、(メモリの言い換え)「MACHINE / WEBROOT / APPHOSTにコミットされた変更」と言った場合、それはIIS階層の最上位を意味します。

「MACHINE / WEBROOT / APPHOST / Dodgy Webサイトにコミット」と表示されている場合、それはDodgy Webサイトの背後にある物理パスを検索し、その場所にweb.configファイルを書き込んだ(または更新した)ことを意味します。


3

IISExpressおよびVisual Studio 2015を使用している場合、applicationHost.configはに格納されます$(solutionDir).vs\config\applicationhost.config(Nime Cloudの回答のおかげです)。

overrideModeDefault="Allow"必要に応じて変更してください。

<sectionGroup name="security">
    <section name="access" overrideModeDefault="Deny" />
    <section name="applicationDependencies" overrideModeDefault="Deny" />
    <sectionGroup name="authentication">
        <section name="anonymousAuthentication" overrideModeDefault="Allow" />
etc...

1

アプリケーションプールで試して、32ビットアプリケーションサポートIISマネージャーを無効にする->アプリケーションプール-> [AppPool]を選択する->詳細設定-> 32ビットアプリケーションを有効にする-'False'に変更する


-2

IISを見てください -この構成セクションはこのパスでは使用できません(構成のロック?)

受け入れられた答えは、Windows 10で完璧に機能し、次のことを行うように指示します。

  • 「スタートボタン」をクリックします
  • 検索ボックスに「Windowsの機能を有効または無効にする」と入力します
  • 機能ウィンドウで、「インターネットインフォメーションサービス」をクリックします。
  • クリック:「World Wide Webサービス」
  • クリック:「アプリケーション開発機能」
  • 機能をチェック(有効化)します。CGI以外はすべてチェックしました。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.