통합 관리 파이프 라인 모드에 적용되지 않는 ASP.NET 설정이 감지되었습니다.


401

DotNetOpenAuth SDK-3.4.5.10201.vsix를 설치했는데 작동하지 않습니다. 로컬로 작동하지만 (localhost로 실행할 때) 게시하려고하면 작동하지 않습니다.

내가 얻는 IIS 오류 메시지는

오류 요약
HTTP 오류 500.22-내부 서버 오류
통합 관리 파이프 라인 모드에 적용되지 않는 ASP.NET 설정이 감지되었습니다.

Module       ConfigurationValidationModule  
Notification BeginRequest  
Handler      StaticFile  
Error Code   0x80070032  

문제를 해결하는 방법에 대한 제안이 있습니다.

시도 할 수있는 것 :

  • 구성을 system.webServer/modules섹션으로 마이그레이션 하십시오. 수동으로 또는 명령 줄에서 AppCmd를 사용하여 (예 :) 수행 할 수 있습니다 %SystemRoot%\system32\inetsrv\appcmd migrate config "Default Web Site/". AppCmd응용 프로그램을 마이그레이션하는 데 사용하면 통합 모드에서 작동 할 수 있으며 클래식 모드 및 이전 버전의 IIS에서도 계속 작동합니다.

  • 이 오류를 무시해도 괜찮은 경우 system.webServer/validation@validateIntegratedModeConfiguration false 로 설정 하여 사용하지 않도록 설정할 수 있습니다 .

  • 또는 응용 프로그램을 클래식 모드 응용 프로그램 풀로 전환하십시오 (예 :) %SystemRoot%\system32\inetsrv\appcmd set app "Default Web Site/" /applicationPool:"Classic .NET AppPool". 응용 프로그램을 이주 할 수없는 경우에만이를 수행하십시오.
    "기본 웹 사이트"및 "Classic .NET AppPool"을 응용 프로그램 경로 및 응용 프로그램 풀 이름으로 설정하십시오.

그러나 문제는 내가 소유자가 아니기 때문에 ISS 서버에 액세스 할 수 없다는 것입니다. 이 문제를 해결할 방법이 있습니까?

답변:


782

번째 옵션은 원하는 옵션입니다.

에서 web.config다음 키가 존재하는지 확인하십시오.

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
    </system.webServer>
</configuration>

10
앱의 보안에 실제로 영향을 미치지는 않습니다. 사용하지 않을 구성 값이 있다는 경고 만 표시하지 않습니다.
David

19
사용하지 않을 설정이 있으면 제거하지 말아야합니다.
Seph

33
@Seph, 이것이 건전한 조언이 아니라고 동의합니다. 많은 NuGet 설치 (예 : DotLess)는 통합 모드에 적용되는 섹션에 항목을 추가하고 비 통합 모드의 설정을 복제합니다. 이것은라고 이동성 과 업무로 구성 할 수 있습니다 에 관계없이 당신은 통합 또는 클래식 / IIS7 사용 여부. 이 유효성 검사 설정을 유지하는 유일한 이유 true는 통합 모드에서 작동하지 않는 설정을 추가 할 때마다 교육용 바퀴를 켜고 IIS에서 소리를지를 수 있기 때문입니다. 이것은 경험이없는 사람들을위한 것이지만 방해가됩니다.
Kirk Woll

5
이런 종류의 구성은 성가신 일입니다. @MS : 더 좋은 방법이 있습니다.
yonexbat

3
마스킹 증상보다 오류 수정을 선호하는 사람들을 위해 대안 답변을 게시했습니다. NuGet 패키지와 관련하여 왜 여전히 IIS 6 / Classic을 목표로 삼고 있습니까?
Jeremy Cook

104

추가 <validation validateIntegratedModeConfiguration="false"/>하면 증상이 해결되지만 모든 상황에 적합한 것은 아닙니다. 이 문제를 몇 차례 해결해 본 결과, 다른 사람들이 문제를 극복 할뿐만 아니라 이해하도록 돕기를 바랍니다. (IIS 6이 신화와 소문으로 사라질수록 점점 더 중요해집니다.)

배경:

이 문제와 관련 혼란은 ASP.NET 2.0 및 IIS 7의 도입으로 시작되었습니다. IIS 6에는 하나의 파이프 라인 모드 만 있고 계속 존재하며 IIS 7+가 "클래식"모드라고 부르는 것과 같습니다. IIS 7+에서 실행되는 모든 응용 프로그램에 대한 두 번째, 새롭고 권장되는 파이프 라인 모드를 "통합"모드라고합니다.

차이점은 무엇입니까? 주요 차이점은 ASP.NET이 IIS와 상호 작용하는 방식입니다.

  • 클래식 모드IIS 파이프 라인과 상호 작용할 수없는 ASP.NET 파이프 라인으로 제한됩니다. 본질적으로 요청이 들어오고 IIS 6 / Classic에 서버 구성을 통해 ASP.NET이 처리 할 수 ​​있다고 요청한 경우 IIS는 ASP.NET에 요청을 전달하고 계속 진행합니다. 이것의 중요성은 예제에서 얻을 수 있습니다. 정적 이미지 파일에 대한 액세스 권한을 부여받은 경우 IIS 6 파이프 라인이 해당 요청 자체를 처리하고 ASP.NET은 해당 요청을 전달하지 않았기 때문에 해당 요청을 볼 수 없기 때문에 ASP.NET 모듈을 사용하여이를 수행 할 수 없습니다. . * 한편, IIS 6 / Classic에서도 IIS가 항상 이러한 요청을 ASP.NET 파이프 라인에 전달하기 때문에 Foo.aspx 요청과 같은 .ASPX 페이지에 액세스 할 수있는 사용자를 인증하는 것은 쉽지 않습니다. 클래식 모드에서 ASP.NET은 현재 상태를 알지 못합니다.

  • ASP.NET 처리기 및 모듈은 IIS 파이프 라인과 직접 상호 작용할 수 있으므로 통합 모드 가 권장됩니다. 더 이상 IIS 파이프 라인이 요청을 단순히 ASP.NET 파이프 라인으로 전달하지 않으므로 이제는 ASP.NET 코드가 IIS 파이프 라인 및 해당 요청에 부딪 치는 모든 요청에 ​​직접 연결될 수 있습니다. 이는 ASP.NET 모듈이 정적 이미지 파일에 대한 요청을 관찰 할 수있을뿐만 아니라 이러한 요청을 가로 채고 액세스 거부, 요청 로깅 등을 통해 조치를 취할 수 있음을 의미합니다.

오류 극복 :

  1. 원래 IIS 6 용으로 작성된 이전 응용 프로그램을 실행중인 경우 새 서버로 옮겼을 경우 해당 응용 프로그램의 응용 프로그램 풀을 클래식 모드에서 실행하는 데 아무런 문제가 없을 수 있습니다. 기분 나빠 할 필요는 없습니다.
  2. 그런 다음 다시 응용 프로그램에 페이스 리프트를 제공하거나 NuGet을 통해 타사 라이브러리를 수동으로 또는 다른 방법으로 설치할 때까지 제대로 작동하지 않을 수 있습니다. 이 경우 전적으로 가능 httpHandlers하거나 httpModules에 추가되었습니다 system.web. 결과는 validateIntegratedModeConfiguration기본값 이므로 표시되는 오류입니다 true. 이제 두 가지 선택이 있습니다.

    1. 에서 httpHandlershttpModules요소를 제거하십시오 system.web. 이것으로부터 몇 가지 가능한 결과가 있습니다 :
      • 모든 것이 잘 작동하며 일반적인 결과입니다.
      • 응용 프로그램이 계속 불평하고 부모 폴더에 web.config가있을 수 있습니다 .web.config 정리도 고려하십시오.
      • 당신은 제거 싫증 httpHandlershttpModulesNuGet 패키지에 추가 유지하는 것이 system.web, 이봐 당신이 무엇을해야.
  3. 이러한 옵션은없는 일을하거나 나는 당신이 설정할 수 없음을 말하지 않을거야 가치보다 더 많은 문제가있는 경우 validateIntegratedModeConfigurationfalse,하지만 적어도 당신은 당신이 무슨 일을하는지 알고 중요한 이유.

잘 읽습니다.

* 물론 , 와일드 카드 매핑 과 같은 주문을 통해 IIS 6 / Classic에서 ASP.NET 파이프 라인으로 모든 종류의 이상한 것들을 가져 오는 방법이 있습니다 .


+1 전용 솔루션은 문제에 대한 답변이 아니라 완벽한 답변 인 설명이있는 솔루션입니다. 이것이 무엇이고 왜 우리가 이것을 바꾸어야 하는가, @Jeremy cook answer에 의해 주어진 이러한 답변의 질문들.
Rikin Patel

이 설명으로 인해 IIS 7.5에서 통합 모드로 호스팅되는 소규모 테스트 사이트의 문제가 해결되었습니다. 새 MVC 프로젝트를 만들 때 Web.config에 httpModule, Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule이 추가되었습니다. 새 ASP.NET 웹 응용 프로그램 프로젝트를 만들 때 "프로젝트에 Application Insights 추가"옵션을 선택된 상태로 두었 기 때문입니다. Web.config에서 httpModule을 제거하면 오류없이 사이트가 작동했습니다. validateIntegratedModeConfiguration을 false로 설정하는 것은 효과가 있었지만 이는 반창고의 접근 방식 일뿐입니다.
iCode

2
통합 관리 파이프 라인 모드에 적용되지 않는 ASP.NET 설정이 감지되었습니다. 이것은 또 다른 쓸모없는 Microsoft 오류 메시지입니다. ASP.net에는 수천 개의 설정이 있지만 Microsoft는 오류 텍스트에 오류를 발생시키는 설정을 포함시키지 않았다. MS는 엔지니어가 아닌 마케팅 담당자가 운영하고 있으므로 조만간 개선 될 것으로 기대하지 않습니다. :-(
Paul McCarthy

35

여전히 HTTP 모듈을 사용해야하는 경우 다음과 같이 HTTP 모듈 (.NET 4.0 프레임 워크)을 구성해야합니다.

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true">
       <add name="MyModule" type="[Namespace].[Class], [assembly]"/>
   </modules>
   <validation validateIntegratedModeConfiguration="false"/>
</system.webServer>

2
system.web의 HttpModules 속성은 ASP 3.5 이전 버전이라고 생각합니다. ASP 4 이상의 경우 system.webserver에서 모듈을 사용하십시오
Trio Cheung

1
@HoyCheung은 system.web / httpModules 또는 system.webServer / modules를 사용할지 여부를 결정하는 .Net 버전이 아닌 통합 또는 클래식 파이프 라인을 사용하는 문제입니다.
Pauli Østerø

29

이 문제가 발생했지만 다른 수정이있었습니다. Control Panel>Administrative Tools>IIS Manager내 앱 사이트의 관리되는 파이프 라인을에서로 ( Integrated을) 업데이트 하고 되 돌리는 작업이 포함 되었습니다 Classic.


3
동의-이것은 단지 오류를 숨기는 것보다 더 나은 옵션입니다! 올바른 앱 풀을 사용하고 있는지 확인하십시오. 클래식이 아니어야합니다.
Swomble

1
Visual Studio 2012를 사용하고 있습니다. 앱 풀을 클래식으로 변경하는 방법은 무엇입니까?

10
통합 파이프 라인에서 사용 가능한 모든 새로운 기능을 사용하려는 경우에는 좋은 솔루션이 아닙니다. 이것은 문제로 인해 4.0에서 .NET 2.0으로 되 돌리는 것과 같습니다.
Trevor de Koekkoek

IIS 관리자에서이 작업을 수행하려면 Application Pools왼쪽의 트리 로 이동 하여 변경하려는 풀을 두 번 클릭하고 파이프 라인 모드를 선택하십시오.
Steve Smith

8

IIS 인증에 충돌이 있는지 확인하십시오. 즉, 익명 인증과 ASP.NET 가장을 사용하면 오류가 발생할 수도 있습니다.


5

web.config에서 다음 키가 존재하는지 확인하십시오.

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
    </system.webServer>
</configuration>

IIS 사이트 인증 에서 Asp.Net Impresonation = Disable 확인


3

나는이 문제에 부딪 쳤고 @Jeremy Cook의 답변에서 영감을 얻었습니다. 총알이 IIS 7 통합 모드가 web.config를 좋아하지 않는 원인을 알아 냈습니다. 내 시나리오는 다음과 같습니다.

  1. 웹 API (버전 4.0.030506.0, 이전 버전)
  2. .NET 4.0
  3. 웹 API를위한 속성 라우팅 3.5.6 [스포일러 경고 :이 사람이었습니다!]

불행히도 .NET 4를 사용해야했기 때문에 .NET 4.5가 필요한 Web API 2.2를 사용할 수없는 프로젝트에서 속성 라우팅을 사용하고 싶었습니다. 잘 알려진 NuGet 패키지는이 섹션을 섹션 아래에 추가했습니다 <system.web>.

<system.web>
<httpHandlers>
      <add verb="*" path="routes.axd" type="AttributeRouting.Web.Logging.LogRoutesHandler, AttributeRouting.Web" />
    </httpHandlers>
</system.web>

[이 부분은 이전 버전의 IIS에서 필요하기 때문에 의미가 있습니다.]

이 섹션을 제거하면 HTTP 500.23을 지나갔습니다 !!

요약 : 나는 "증상을 가리는"것이 아니라 왜 효과가 없는지 이해하는 것이 중요하다는 Jeremy의 말을 두 번째로 생각합니다. 증상을 숨겨야하더라도, 당신이하고있는 일 (및 이유)을 알고 있습니다 :-)


감사. Api 컨트롤러 애드온 NuGet 패키지를 포함하여 AttributeRouting을 추가하고 web.config에서 지정한 섹션을 제거하면 문제가 해결되었습니다. 그러나 MVC 웹 앱이 이미 .NET Framework 4.5를 사용하고 있기 때문에 약간 걱정입니다.
Robert Oschler

2
@RobertOschler .NET 4.5를 사용하는 경우 이미 AFAIK에 속성 라우팅이 내장되어 있습니다.이 NuGet이 필요하지 않습니까?
Sudhanshu Mishra

고마워요 오늘 NuGet을 실행하는 AttributeRouting 패키지를 얻는 데 몇 시간이 걸렸습니다. 나는 그것을 뽑아 내고 그것을 추가하기 위해 추가 한 모든 코드 "수정"을 undid하고 GET () 속성에 대한 Web API 2 Route () 속성을 대체했습니다. 잘 했어. 요즘에는 이러한 모든 패키지를 지원하기 위해 전문가 시스템이 필요합니다.
Robert Oschler

2

이것은 나를 위해 일했다 :

  1. 원래 생성 된 사이트를 삭제하십시오.
  2. IIS에서 사이트를 다시 만듭니다
  3. 깨끗한 솔루션
  4. 솔루션 구축

사이트를 처음 만들었을 때 남쪽으로 이동 한 것 같습니다. 오류의 원인을 모른 채 "컴퓨터를 다시 시작한 다음 창을 다시 설치하십시오"와 유사한 솔루션이 싫어요. 그러나 이것은 나를 위해 일했습니다. 빠르고 간단합니다. 그것이 다른 누군가를 돕기를 바랍니다.


0

내 경우에는 web.config 파일에서 참조 된 bin 폴더에 dll이 없습니다. 따라서 web.config의 설정을 사용하고 있지만 실제로 dll이 없는지 확인하십시오.

감사


0

이 오류에 대해 여기에서 찾은 모든 설정이 동일하지만 여전히 작동하지 않기 때문에이 문제를 해결하는 데 몇 시간이 걸렸습니다. 문제는 내 웹 서비스에 파일을 WinCE 장치로 보내야하는 폴더가 있고 폴더를 Classic.NetAppPool을 사용하는 응용 프로그램으로 변환 한 후 작동하기 시작했습니다.


0

아래 단계는 내 문제를 해결했습니다.

CMD관리자 권한으로 프롬프트를 엽니 다 .

운영 : iisreset.

도움이 되었기를 바랍니다.


-1

지역 방법은 오류입니다

영상


7
실제로 수행중인 작업을 모르면이 설정을 변경하지 마십시오. 이것은 거의 정답이 아닙니다.
NickG
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.