문제

사용자의 컴퓨터에서...

가하는 스크립트를 사용하여 책을 설정하는 스크립트맵 IIS 웹 사이트입니다.그것의 자바스크립트,내에서 실행 cscript.exe 고 코드는 다음과 같이 나타납니다.

var web = GetObject("IIS://localhost/W3SVC/1");
var maps = web.ScriptMaps.toArray();
map[maps.length] = ".aaa,c:\\path\\to\\isapi\\extension.dll,1,GET,POST";
web.ScriptMaps = maps.asDictionary();
web.SetInfo();

면 IIS 관리자에서 스크립트를 실행 한 후,내가 볼 수 있는 새로운 목록에서 핸들러를 매핑됩니다.그것은 이상한 이름"AboMapperCustom-43155"내가 이해서 IIS7 호환층 대하여 책.

는 경우,IIS 관리자에서,나는 그때를 제거 그 핸들러를 매핑을,그 다음은 다른 실행하여 책 스크립트를 쿼리하는 스크립트맵산,검색된 스크립트 맵에서 스크립트에서는 여전히 항목을 그냥 제거됩니다.결과에 제 스크립트와 동의하지 않는 목록의"핸들러를 매핑"과 같 IIS 관리자입니다.

이 지속도 후에 시작/정지의 IISADMIN 및 W3SVC.

이것이 예상되는 동작입니까?제가 지원되는"호환성 모드에서"IIS7.이 아티팩트는?

내가 믿는 경우에는 핸들러를 매핑을 제거에서 IIS 관리자,그때는 정말 사라지만 아직도 그것을 가져옵에서 반환하여 책 쿼리가 있습니다.

할 수 있는 사람이 제공에 어떤 정화를 이?

도움이 되었습니까?

해결책

을 추가하면'스크립트 맵을 사용하여 제한 호환성 비트(기본값을 사용하는 웹사이트에 대한 논쟁을 위해)이 추가하는 핸들러를 매핑 applicationHost.config 파일에 대해 사이트:

<location path="Default Web Site">
  <system.webServer>
    <handlers>
        <add name="AboMapperCustom-12345678" ... />
    </handlers>
  </system>
</location>

를 삭제할 때 핸들러를 매핑에서 IIS7 관리자를 대신 제거에서 매핑 applicationHost.config 파일과 섹션에서 다음과 같이,위의 web.config 파일에 추가하여 사이트의 루트와 함께 다음과 같다:

<configuration>
  <system.webServer>
    <handlers>
        <remove name="AboMapperCustom-12345678" />
    </handlers>
  </system>
</configuration>

할 때 구성한 웹 사이트를 사용하여 새로운 관리 Microsoft.Web.Administration .NET API 를 읽을 수 있습니다 config 서로 다른 수준에서,예를 들어:

1:구성을 읽기에 applicationHost.config 또 APPHOST 수준

ServerManager serverManager = new ServerManager();
var site = serverManager.Sites.Where(s => s.Id == 1).SingleOrDefault();
Configuration siteConfig = serverManager.GetApplicationHostConfiguration();
ConfigurationSection handlersSection = 
     siteConfig.GetSection("system.webServer/handlers", site.Name);
ConfigurationElementCollection handlersCollection = 
     handlersSection.GetCollection();

foreach (var item in handlersCollection)
{
    Console.WriteLine(item.Attributes["name"].Value);
}

위의 예제에서도 삭제된 매핑을,그것은 여전히 나와 반복할 때 처리기 매핑 컬렉션입니다.이 때문에 당신이 요청한 구성에서 응용 프로그램 호스트 수준입니다.모 web.config 파일에 존재하는 사이트에 뿌리거나 아래를 읽을 수 없고 그들의 핸들러 <add/><remove/> 지시어는 포함되지 않습니다.

2:을 읽을 수 있습 구성하는 특정 사이트에(또는 하위 사이트에서):

ServerManager serverManager = new ServerManager();
Configuration siteConfig = serverManager.GetWebConfiguration("Default Web Site");    
ConfigurationSection handlersSection = 
    siteConfig.GetSection("system.webServer/handlers");
ConfigurationElementCollection handlersCollection = 
    handlersSection.GetCollection();

foreach (var item in handlersCollection)
{
    Console.WriteLine(item.Attributes["name"].Value);
}

또한이 사이트를 읽어 web.config 파일을 반환 핸들러를 매핑하는 목록에 대한 계정 <add/><remove/> 지시어에 지정 web.config.

이것은 어떤 IIS7 관리자는 응용 프로그램을 때 당신은 당신을 보고 수정하는 핸들러를 매핑됩니다.그것은 추가 및 제거 처리기에 의해 생성(필요한 경우)a web.config 파일에서 사이트의 루트 폴더(하위)및 추가 필요 <add/><remove/> 습니다.

이 lls6 에 호환성이 나타납 운영에 전적으로 applicationHost.config APPHOST 준(옵션 1 위에)어떤 이유에 당신을보고 이러한 차이점이 있습니다.

그것은 버그?나는 확실하지 않기 때문에 그것이 궁극적으로 제지 않았 web.config 을 알고 있습니다.또한 MS 것을 추가하는 새로운 방법 또는 플래그를 지정할 수 있는 수준 당신이 정말로 원하는 이들에게'스크립트 맵의 변경 내용과 그 의미할 수 있습을 깨고 테스트하여 책 구성요소에서 차례로 소개할 수 있습니다.행동을 시뮬레이션을 수정하 old lls6 에 메타베이스 및 applicationHost.config 에서 효과하는 것과 유사한 메타베이스 그래서 당신이 주장할 수 있습니,바르게 또는 잘못,그것의 일을 하고 있다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top