IIS(인터넷 정보 서비스) 8을 사용하여 개발자는 웹 서버의 요청을 처리하는 네이티브 및 관리 코드 모듈을 손쉽게 구성할 수 있습니다. 작업 프로세스에서 모듈을 로드하려면 해당 모듈이 올바르게 구성되어 있어야 합니다. 모듈을 올바르게 구성하려면 모듈 이름이 고유해야 하며 유형 또는 경로가 유효해야 합니다. 관리 모듈은 ASP.NET 응용 프로그램 또는 관리되는 처리기에 대한 요청인 경우에만 이 모듈이 호출되는지 여부를 지정할 수 있습니다. 이 설정이 지정되면 성능이 최적화될 수 있습니다.
모듈의 전제 조건 수정
모듈 항목에는 모듈이 로드되는 조건을 포함할 수 있는 선택적 preCondition 특성이 있습니다. 예를 들어 preCondition에서 통합 모드로 실행되는 응용 프로그램 풀, ISAPI 모드로 실행되는 응용 프로그램 풀 또는 지정된 .NET Framework 버전을 사용하는 응용 프로그램 풀에 대해서만 IIS가 모듈을 로드하도록 지정할 수 있습니다. 이 마지막 설정은 다른 버전의 CLR 런타임을 사용하는 응용 프로그램 풀에 대해 다른 버전의 관리 엔진 모듈을 사용할 수 있도록 만듭니다.
다음은 preCondition 특성이 있는 모듈 항목의 ApplicationHost.config 파일의 globalModules 섹션 예입니다.
<globalModules>
<add name="ManagedEngine"
image="%Windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll"
preCondition="integratedMode,runtimeVersionv2.0,bitness32"
/>
</globalModules>
각 모듈을 로드하기 전에 서버는 구성에 있는 전제 조건을 평가합니다. 로드 전제 조건 중 하나라도 false를 반환하는 경우 모듈이 로드되지 않습니다.
이 문제를 해결하려면:
ApplicationHost.config 파일을 백업합니다. 이렇게 하려면 섹션 A를 참조하십시오.
모듈의 preCondition 특성을 찾고 수정합니다. 이 특성이 올바로 구성되어 있고 모듈을 사용할 응용 프로그램 풀 또는 작업자 프로세스의 특성과 일치하는지 확인합니다. 특성을 찾으려면 섹션 B를 참조하십시오.
전제 조건을 수정하면 모듈이 성공적으로 로드되어야 합니다.
ApplicationHost.config 파일 백업
ApplicationHost.config 파일을 백업하려면:
권한이 상승된 명령 프롬프트 창을 엽니다. [시작]을 클릭하고 [모든 프로그램]을 가리킨 다음, [보조프로그램]을 클릭하고 [명령 프롬프트]를 마우스 오른쪽 단추로 클릭한 이후 [관리자 권한으로 실행]을 클릭합니다.
%Windir%\system32\inetsrv 디렉터리로 변경합니다.
appcmd add backup backupName을 입력하여 ApplicationHost.config 파일을 백업합니다.
지정한 백업 이름의 디렉터리가 %Windir%\system32\inetsrv\backup 디렉터리에 만들어집니다. 이름을 지정하지 않으면 Appcmd.exe가 현재 날짜 및 시간을 사용하여 디렉터리 이름을 자동으로 생성합니다.
ApplicationHost.config 파일에서 모듈 항목 찾기
ApplicationHost.config 파일에서 모듈 항목을 찾으려면:
권한이 상승된 명령 프롬프트 창을 엽니다. [시작]을 클릭하고 [모든 프로그램]을 가리킨 다음, [보조프로그램]을 클릭하고 [명령 프롬프트]를 마우스 오른쪽 단추로 클릭한 이후 [관리자 권한으로 실행]을 클릭합니다.
cd %Windir%\system32\inetsrv\config를 입력합니다.
notepad applicationHost.config를 입력합니다.
메모장에서 system.webServer 섹션 아래 globalModules 섹션을 검색합니다.
preCondition 특성이 있는 모듈 항목을 찾고 필요한 경우 수정합니다.
ApplicationHost.config 파일을 저장하고 메모장을 종료합니다.
globalModules 섹션에 대한 자세한 정보는 IIS 8: globalModules(IIS 설정 스키마) 추가를 참조하세요.
Target | Microsoft.Windows.InternetInformationServices.6.2.WebServer |
Category | Alert |
Enabled | True |
Event_ID | 2296 |
Event Source | Microsoft-Windows-IIS-W3SVC-WP |
Alert Generate | False |
Remotable | True |
Event Log | Application |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.EventProvider | Default |
WA | WriteAction | Microsoft.Windows.Server.IIS.6.2.GenerateAlertAction.SuppressedByDescription | Default |
<Rule ID="Microsoft.Windows.InternetInformationServices.6.2.Module.has.an.invalid.precondition" Enabled="true" Target="Microsoft.Windows.InternetInformationServices.6.2.WebServer" ConfirmDelivery="false" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>Alert</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Microsoft-Windows-IIS-W3SVC-WP</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>2296</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="WA" TypeID="Microsoft.Windows.Server.IIS.6.2.GenerateAlertAction.SuppressedByDescription">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.Windows.InternetInformationServices.6.2.Module.has.an.invalid.precondition.AlertMessage"]$</AlertMessageId>
</WriteAction>
</WriteActions>
</Rule>