2012-05-15 4 views
0

WSUS가 설치된 Windows 2008 x64 서버가 설치되어 있으며 32 비트 응용 프로그램 풀을 사용하는 웹 사이트가 손상되었습니다. 이 문제는 IIS 용 applicationHost.config 파일 내의 압축 구성표 정의로 인해 발생합니다. 우리는 suscomp.dll의 32 비트 버전을 복사하여 더러운 방식으로 문제를 해결했지만보다 나은 방법이 있어야한다고 확신합니다! 웹 서버 수준에서IIS7에서 스크립트로 모듈 제거

  • 을, '모듈'아래 StaticCompressionModule 및 DynamicCompressionModule 항목의 잠금을 해제 :

    나는 다음과 같이에게 IIS7 GUI에서 다른 방법으로 해결할 수 있습니다.

  • 내 웹 사이트 수준에서이 모듈을 삭제하십시오.

충분히 간단합니다. 단 두 단계 만 거쳐야합니다.

appcmd delete module "DynamicCompressionModule" /app.name:"Default Web Site/mysite" 

을하지만 1 문제가 단계없이 그렇게하려고하면 그건 그냥 나에게 잠금 위반을 제공합니다 나는 내 인생은 알아낼 수 없습니다를 들어, 다음과 같이 나는 APPCMD 명령어를 사용하여 두 번째 부분을 수행 할 수 있습니다 Powershell 또는 appcmd를 사용하여 웹 서버 수준에서 개별 모듈의 잠금을 해제하는 방법. 확실하게 이것이 가능해야만합니까?

다른 사람이이 문제를 경험하고 공유 할 수있는 사람이 있습니까?

감사합니다. 알.

+0

appcmd 삭제 모듈을 수행하기 전에 appcmd unlock config -section : system.webServer/modules을 시도 했습니까? –

+0

예, David, 모듈 구성 섹션의 잠금을 해제했습니다. –

답변

0

나는 이것을하지 않았다 그러나이에게 내가 원래 문제가 이미 해결 가정 시도 (먼저 테스트 환경에서 실행)

Import-Module WebAdministration 

# at the web server level, unlock the StaticCompressionModule 
# and DynamicCompressionModule entries under 'modules'. 
Set-WebConfigurationProperty //modules -Name Collection -Value @{name='StaticCompressionModule';lockItem='false'} -PSPath IIS:\ 
Set-WebConfigurationProperty //modules -Name Collection -Value @{name='DynamicCompressionModule';lockItem='false'} -PSPath IIS:\ 

# at my web site level, delete these modules 
Disable-WebGlobalModule -PSPath 'IIS:\Sites\Default Web Site' -Name DynamicCompressionModule 
+0

위의 명령을 보내 주셔서 감사합니다.그러나 Set-WebConfigurationProperty 명령이 작동하지 않는 것 같습니다. 그들은 오류가 없지만 IIS 관리자로 가면 모듈이 여전히 잠겨 있음을 알 수 있습니다. Disable-WebGlobalModule 명령을 실행하면 잠금 위반이 발생합니다. * 잠긴 물건에 대한 표시를 주면 정말 편리할까요? 나는 32 비트 powershell 프롬프트 (내 작업이 필요함)에서 작동하지 않는다고 생각하기 때문에 이전에이 스냅 샷을 사용하지 않았다. 내가 틀렸을 수도있는 것처럼 보였다. –

+0

내 Windows 7 머신에서 실행했다. , 그들은 일하는 것 같았다. 죄송합니다, 여기서 많이 도와 드릴 수는 없습니다. –

+0

당신의 도움이 많이 감사합니다, 셰이. Annoyingly close .. :-) –

0

을 제공하지만이 잠시 건너 온 이후를 해결하기 위해 노력 적이 검색을 통해 비슷한 문제가 생길 수도 있습니다. 아마도이 답변은 다른 사람에게 도움이 될 것입니다. 기본적으로 문제는 modules 섹션의 잠금을 해제하고 덮어 쓰기가 허용되는 <location>에 복사 한 경우에도 모든 고유 모듈 (적어도 IIS 8)에 lockItem="true"이 설정되어 있다는 것입니다.

appcmd.exe를 사용하여 APPROOT lockItem의 원시 모듈 항목을 삭제했다가 다시 작성하면이 항목이 사라집니다. 명령은 예를 들어, StaticCompressionModule을 위해 그것을 달성하기 위해이 네이티브 모듈 작동

appcmd set config -section:system.webServer/modules /-[name='StaticCompressionModule'] 
appcmd set config -section:system.webServer/modules /+[name='StaticCompressionModule'] 

참고 namelockItem (NO type 또는 preCondition)에 비해 그들이 다른있는 유일한 재산이기 때문이다. 내 경우에는 내가 <clear />에 모든 기본 handlersmodules 수있을 특히 단지 내 모듈 기반 응용 프로그램에 필요한 추가하고 싶었 :

@echo off 
setlocal 
set iis=%SystemRoot%\System32\inetsrv\appcmd.exe 
set iisx=%iis% /commit:apphost 
set ws=config -section:system.webServer 
%iisx% unlock %ws%/handlers 
%iisx% unlock %ws%/modules 
for /f "tokens=3 delims== " %%a in ('%iis% list %ws%/modules ^| find /v "type=" ^| find "add"') do %iisx% set %ws%/modules /-[name='%%~a'] && %iisx% set %ws%/modules /+[name='%%~a'] 
endlocal 

배치 파일에서 만들어진 가정은 modules 아래의 모든 <add> 요소를 가지고있다 a type이며 잠기지 않았거나 잠기지 않았으며 잠겨 있고 중요한 것은 name입니다. 누가 웹 애플리케이션을 사용하고있는 것과 비슷한 일을하려고한다면, 나는 블로그에 http://christophercrooker.com으로 블로그를 만들려고 노력할 것이다.