설치 응용 프로그램에서 .config 파일을 확인해야합니다 (iis 프로젝트에서 iis 사용자 지정 작업). 사용자가 웹 사이트를 선택하고 가상 디렉터리 이름을 입력합니다. ASP.NET에서 설정 파일을 제공하지 않기 때문에 config 파일을 검색하기 위해 http를 읽을 수 없습니다.MapPath 또는 설치 응용 프로그램에서 사용하는 것과 동일
선택한 웹 사이트 및 가상 디렉터리의 로컬 디스크 경로는 어떻게 찾을 수 있습니까?
설치 응용 프로그램에서 .config 파일을 확인해야합니다 (iis 프로젝트에서 iis 사용자 지정 작업). 사용자가 웹 사이트를 선택하고 가상 디렉터리 이름을 입력합니다. ASP.NET에서 설정 파일을 제공하지 않기 때문에 config 파일을 검색하기 위해 http를 읽을 수 없습니다.MapPath 또는 설치 응용 프로그램에서 사용하는 것과 동일
선택한 웹 사이트 및 가상 디렉터리의 로컬 디스크 경로는 어떻게 찾을 수 있습니까?
추가 검색 후 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;
}
표준 WiX IIsExtension을 사용해 보셨습니까? 속성에서 사용자 입력을 캡처 한 다음 iis:WebSite 및 iis:WebVirtualDir과 같은 표준 요소를 사용하여 해당 웹 사이트에 가상 디렉터리를 만듭니다.