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 서버에 액세스 할 수 없다는 것입니다. 이 문제를 해결할 방법이 있습니까?
답변
두 번째 옵션은 원하는 옵션입니다.
에서 web.config
다음 키가 존재하는지 확인하십시오.
<configuration>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
</configuration>
답변
추가 <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 모듈이 정적 이미지 파일에 대한 요청을 관찰 할 수있을뿐만 아니라 이러한 요청을 가로 채고 액세스 거부, 요청 로깅 등을 통해 조치를 취할 수 있음을 의미합니다.
오류 극복 :
- 원래 IIS 6 용으로 작성된 이전 응용 프로그램을 실행중인 경우 새 서버로 옮겼을 경우 해당 응용 프로그램의 응용 프로그램 풀을 클래식 모드에서 실행하는 데 아무런 문제가 없을 수 있습니다. 기분 나빠 할 필요는 없습니다.
-
그런 다음 다시 응용 프로그램에 페이스 리프트를 제공하거나 NuGet을 통해 타사 라이브러리를 수동으로 또는 다른 방법으로 설치할 때까지 제대로 작동하지 않을 수 있습니다. 이 경우 전적으로 가능
httpHandlers
하거나httpModules
에 추가되었습니다system.web
. 결과는validateIntegratedModeConfiguration
기본값 이므로 표시되는 오류입니다true
. 이제 두 가지 선택이 있습니다.- 에서
httpHandlers
및httpModules
요소를 제거하십시오system.web
. 이것으로부터 몇 가지 가능한 결과가 있습니다 :- 모든 것이 잘 작동하며 일반적인 결과입니다.
- 응용 프로그램이 계속 불평하고 부모 폴더에 web.config가있을 수 있습니다 .web.config 정리도 고려하십시오.
- 당신은 제거 싫증
httpHandlers
과httpModules
NuGet 패키지에 추가 유지하는 것이system.web
, 이봐 당신이 무엇을해야.
- 에서
- 이러한 옵션은없는 일을하거나 나는 당신이 설정할 수 없음을 말하지 않을거야 가치보다 더 많은 문제가있는 경우
validateIntegratedModeConfiguration
에false
,하지만 적어도 당신은 당신이 무슨 일을하는지 알고 중요한 이유.
잘 읽습니다.
* 물론 , 와일드 카드 매핑 과 같은 주문을 통해 IIS 6 / Classic에서 ASP.NET 파이프 라인으로 모든 종류의 이상한 것들을 가져 오는 방법이 있습니다 .
답변
여전히 HTTP 모듈을 사용해야하는 경우 다음과 같이 HTTP 모듈 (.NET 4.0 프레임 워크)을 구성해야합니다.
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="MyModule" type="[Namespace].[Class], [assembly]"/>
</modules>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
답변
이 문제가 발생했지만 다른 수정이있었습니다. Control Panel>Administrative Tools>IIS Manager
내 앱 사이트의 관리되는 파이프 라인을에서로 ( Integrated
을) 업데이트 하고 되 돌리는 작업이 포함 되었습니다 Classic
.
답변
IIS 인증에 충돌이 있는지 확인하십시오. 즉, 익명 인증과 ASP.NET 가장을 사용하면 오류가 발생할 수도 있습니다.
답변
web.config에서 다음 키가 존재하는지 확인하십시오.
<configuration>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
</configuration>
IIS 사이트 인증 에서 Asp.Net Impresonation = Disable 확인
답변
나는이 문제에 부딪 쳤고 @Jeremy Cook의 답변에서 영감을 얻었습니다. 총알이 IIS 7 통합 모드가 web.config를 좋아하지 않는 원인을 알아 냈습니다. 내 시나리오는 다음과 같습니다.
- 웹 API (버전 4.0.030506.0, 이전 버전)
- .NET 4.0
- 웹 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의 말을 두 번째로 생각합니다. 증상을 숨겨야하더라도, 당신이하고있는 일 (및 이유)을 알고 있습니다 🙂