2010-11-22 1 views
0

설치 응용 프로그램에서 .config 파일을 확인해야합니다 (iis 프로젝트에서 iis 사용자 지정 작업). 사용자가 웹 사이트를 선택하고 가상 디렉터리 이름을 입력합니다. ASP.NET에서 설정 파일을 제공하지 않기 때문에 config 파일을 검색하기 위해 http를 읽을 수 없습니다.MapPath 또는 설치 응용 프로그램에서 사용하는 것과 동일

선택한 웹 사이트 및 가상 디렉터리의 로컬 디스크 경로는 어떻게 찾을 수 있습니까?

답변

0

추가 검색 후 DirectoryServices가 사용되었습니다. 나는 다른 사람들을 위해 나의 해결책을 게시하고있다.

더 좋은 방법이 있다면 여전히 게시하십시오.

static string FindVirtualDirectoryPath(string virtualDirectoryName) 
    { 
     return FindVirtualDirectoryPath(null, virtualDirectoryName); 
    } 

    static string FindVirtualDirectoryPath(string siteName, string virtualDirectoryName) 
    { 
     DirectoryEntry iis = new DirectoryEntry("IIS://localhost/W3SVC"); 
     foreach (DirectoryEntry index in iis.Children) 
     { 
      if (index.SchemaClassName == "IIsWebServer") 
      { 
       int id = Convert.ToInt32(index.Name); 
       DirectoryEntry site = new DirectoryEntry(string.Concat("IIS://localhost/W3SVC/", id)); 
       string iSiteName = site.Properties["ServerComment"].Value.ToString(); 
       if (iSiteName == siteName || (string.IsNullOrEmpty(siteName) && id == 1)) 
       { 
        DirectoryEntry rootVDir = new DirectoryEntry(string.Concat("IIS://localhost/W3SVC/", id, "/Root")); 
        foreach (DirectoryEntry vDir in rootVDir.Children) 
        { 
         if (vDir.SchemaClassName == "IIsWebVirtualDir" && vDir.Name.ToLower() == virtualDirectoryName.ToLower()) 
         { 
          return vDir.Properties["Path"].Value.ToString(); 
         } 
        } 
       } 
      } 
     } 
     return null; 
    } 
0

표준 WiX IIsExtension을 사용해 보셨습니까? 속성에서 사용자 입력을 캡처 한 다음 iis:WebSiteiis:WebVirtualDir과 같은 표준 요소를 사용하여 해당 웹 사이트에 가상 디렉터리를 만듭니다.

관련 문제