IIS는 잠긴 섹션에 대해 불평합니다-잠긴 위치를 어떻게 알 수 있습니까?


54

내 web.config 에이 섹션이 있습니다.

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

IIS7이 충돌하고 인증 섹션에 대해 불평합니다.

모듈 AnonymousAuthenticationModule
알림 AuthenticateRequest
처리기 StaticFile
오류 코드 0x80070021
구성 오류이 구성 섹션은이 경로에서 사용할 수 없습니다. 이것은 섹션이 부모 수준에서 잠겨있을 때 발생합니다. 잠금은 기본적으로 (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는 사용중인 모든 사이트의 루트 인 내 웹 사이트의 이름입니다).

<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에서 특정 정보를 얻을 수있는 방법이 있습니까?

편집 : IIS7 관리 콘솔을 사용하여 루트 (내 컴퓨터)로 이동하여 "구성 편집"을 클릭하고 섹션의 잠금을 해제 하여이 문제를 해결할 수있었습니다. 여전히 실제로 수정하는 파일을 찾을 수 없으므로 더 좋은 방법이 있는지 알고 싶습니다.


메모리에는 일반적으로 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과 동등한 기능이 있습니까? 이 스크립트를 작성하고 싶습니다.
Pete Stensønes

하나를 찾으면 자유롭게 게시하십시오 :)
tomfanning

나는 다른 누군가가 이미 그 방법을 알고 있기를 바랐습니다.
Pete Stensønes

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. 역할 섹션에서 다음을 선택하십시오. 웹 서버
  3. 아래 보안 하위 섹션 모든 것을 (나는, IP 제한 및 우리가 사용하지 않는 URL 권한 부여를 다이제스트를 제외)을 선택
  4. 응용 프로그램 개발 에서 및를 모두 선택 .NET Extensibility 4.5하고 ASP>NET 4.5ISAPI 항목
  5. 에서 특징 섹션 선택 : NET 3.5, .NET 4.5,ASP.NET 4.5
  6. 에서 웹 서버 섹션 선택 : 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 / 웹 사이트 이름)

  3. (MACHINE / WEBROOT / APPHOST / 사이트 이름 / 앱 이름) 모든 App web.config 파일

섹션 (예 : IIS 구성 섹션 <asp>)을 잠그면 해당 설정을 사용자보다 계층의 하위 수준에있는 사람에게 구성하는 기능을 거부 할 수 있습니다.

GUI의 Feature Delegation 기능을 사용하는 것은 잘못된 것이 아니며 AppCMD가하는 것과 매우 비슷한 일을합니다. 커버의 <location>어떤 부분 에서든 어떤 설정 레벨에서든 태그 의 지정된 섹션에 대해 OverrideMode를 설정합니다.

APPCMD를 사용하여 파일을 잠금 해제 할 수 있지만 파일의 위치에주의를 기울이십시오. GUI에 대해서는 똑똑하지 않습니다.

명령 -commit:apphost끝에 추가하면 IIS 작업 핵심 파일 인 APPCMD UNLOCKApplicationhost.config가 대상이 됩니다 (이전 버전에서 메타베이스를 대체하고 모든 중앙 집중식 설정을 저장하지만 web.config 파일에서 재정의 할 수 있음).

-commit : apphost가 없으면 APPCMD는 사이트 또는 앱 수준에서 web.config 파일에 가장 가까운 논리적 지점을 대상으로하고 위의 설정과 같은 구성 문자열을 사용하여 설정이 변경되었음을 나타냅니다. (제외 : 하위 웹 사이트의 설정 만 대상으로 지정할 수 있지만 apphost에 커밋 할 수 있습니다. 위치 태그를 사용하여이를 수행합니다.)

따라서 (메모리 패러 프레이즈) "MACHINE / WEBROOT / APPHOST에 커밋 된 변경 사항"이라고 말하면 이는 IIS 계층 구조의 최상위 수준을 의미합니다.

"MACHINE / WEBROOT / APPHOST / Dodgy 웹 사이트에 커밋 됨"이라고 표시되면 Dodgy 웹 사이트의 실제 경로를 찾아 해당 위치에 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 관리자 지원-> 응용 프로그램 풀-> [Your AppPool]-> 고급 설정-> 32 비트 응용 프로그램 사용- 'False'로 변경하십시오.


-2

IIS 살펴보기 -이 구성 섹션은이 경로에서 사용할 수 없습니다 (구성 잠금?)

허용 된 답변은 Windows 10에서 완벽하게 작동했으며 다음을 수행하도록 지시합니다.

  • "시작 버튼"을 클릭하십시오
  • 검색 창에 "Windows 기능 켜기 또는 끄기"를 입력하십시오.
  • 기능 창에서 "인터넷 정보 서비스"를 클릭하십시오.
  • 클릭 : "World Wide Web Services"
  • "응용 프로그램 개발 기능"을 클릭하십시오.
  • 기능을 확인 (활성화)하십시오. CGI 이외의 모든 것을 확인했습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.