IIS(인터넷 정보 서비스) 8을 사용하여 개발자는 웹 서버의 요청을 처리하는 네이티브 및 관리 코드 모듈을 손쉽게 구성할 수 있습니다. 작업 프로세스에서 모듈을 로드하려면 해당 모듈이 올바르게 구성되어 있어야 합니다. 모듈을 올바르게 구성하려면 모듈 이름이 고유해야 하며 유형 또는 경로가 유효해야 합니다. 관리 모듈은 ASP.NET 응용 프로그램 또는 관리되는 처리기에 대한 요청인 경우에만 이 모듈이 호출되는지 여부를 지정할 수 있습니다. 이 설정이 지정되면 성능이 최적화될 수 있습니다.
모듈의 등록 수정
IIS8 환경에서 모듈은 서버 이벤트를 구독할 수 있는 논리 엔터티입니다. 웹 서버는 서버 시작 시 모듈을 로드하도록 구성되어 있습니다. 시작하는 동안 서버가 모듈에 원하는 이벤트를 등록하도록 요청합니다. 모듈 구현 시 필요한 이벤트에 대한 모듈 등록이 수행됩니다. 모듈에 서버가 액세스하여 등록할 수 있는 유효한 진입점이 없으면 등록이 실패합니다.
이 문제를 해결하려면 다음 단계를 수행하세요.
ApplicationHost.config 파일의 백업을 만듭니다. 이렇게 하려면 섹션 A를 참조하십시오.
ApplicationHost.config의 globalModules 섹션에 있는 모듈 목록에서 모듈을 제거합니다. 모듈이 ApplicationHost.config에 나열되지 않은 경우, 서버 시작 시 해당 모듈을 로드하려고 하고 이 모듈을 사용하려는 각 작업자 프로세스가 모듈을 사용할 수 없게 됩니다. 구성에서 모듈을 제거하려면 섹션 B를 참조하십시오.
모듈을 서버에 등록할 수 있도록 개발자가 모듈의 진입점을 수정하도록 합니다.
모듈의 진입점을 수정한 후 ApplicationHost.config에 모듈을 다시 추가합니다.
ApplicationHost.config 파일의 백업 만들기
ApplicationHost.config 파일의 백업을 만들려면:
권한이 상승된 명령 프롬프트 창을 엽니다. [시작]을 클릭하고 [모든 프로그램]을 가리킨 다음, [보조프로그램]을 클릭하고 [명령 프롬프트]를 마우스 오른쪽 단추로 클릭한 이후 [관리자 권한으로 실행]을 클릭합니다.
%Windir%\system32\inetsrv 디렉터리로 변경합니다.
appcmd add backup backupName을 입력하여 ApplicationHost.config 파일을 백업합니다.
지정한 백업 이름의 디렉터리가 %Windir%\system32\inetsrv\backup 디렉터리에 만들어집니다. 이름을 지정하지 않으면 appcmd가 현재 날짜 및 시간을 사용하여 디렉터리 이름을 자동으로 생성합니다.
구성에서 모듈 제거
구성에서 모듈을 제거하려면:
권한이 상승된 명령 프롬프트 창을 엽니다. [시작]을 클릭하고 [모든 프로그램]을 가리킨 다음, [보조프로그램]을 클릭하고 [명령 프롬프트]를 마우스 오른쪽 단추로 클릭한 이후 [관리자 권한으로 실행]을 클릭합니다.
%Windir%\system32\inetsrv\config로 디렉터리를 변경합니다.
notepad ApplicationHost.config를 입력합니다.
메모장에서 system.webServer 섹션 아래 globalModules 섹션을 검색합니다.
실패한 모듈 진입점을 찾아 제거합니다.
ApplicationHost.config 파일을 저장하고 메모장을 종료합니다.
globalModules 섹션에 대한 자세한 정보는 IIS 8: globalModules(IIS 설정 스키마) 추가를 참조하세요.
Target | Microsoft.Windows.InternetInformationServices.6.2.WebServer |
Category | Alert |
Enabled | True |
Event_ID | 2295 |
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.registration.error.detected.failed.to.find.RegisterModule.entrypoint" 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>2295</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.registration.error.detected.failed.to.find.RegisterModule.entrypoint.AlertMessage"]$</AlertMessageId>
</WriteAction>
</WriteActions>
</Rule>