2015-01-12 9 views
1

기존 웹 사이트 내에 응용 프로그램이 있는지 확인할 수 있지만 아무것도 찾지 못했습니다. 지금은 기존 웹 사이트의 이름에 대한 사용자 입력을받는 설치 프로그램 프로젝트가 있습니다. 이 사이트를 사용하여 현재 IIS에 존재하는지 확인하고, 그렇다면 기존 응용 프로그램을 검색하여 특정 1이 있는지 확인하려고합니다. 난 여기가 무슨 :웹 사이트 내에서 웹 사이트 응용 프로그램 이름을 어떻게 얻을 수 있습니까?

private void CheckWebsiteApps() 
{ 
    SiteCollection sites = null; 

    try 
    { 
     //Check website exists 
     sites = mgr.Sites; 
     foreach (Site s in sites) 
     { 
      if (!string.IsNullOrEmpty(s.Name)) 
      { 
       if (string.Compare(s.Name, "mysite", true) == 0) 
       { 
        //Check if my app exists in the website 
        ApplicationCollection apps = s.Applications; 
        foreach (Microsoft.Web.Administration.Application app in apps) 
        { 
         //Want to do this 
         //if (app.Name == "MyApp") 
         //{ 
         // Do Something 
         //} 
        } 
       } 
      } 
     } 
    } 
    catch 
    { 
     throw new InstallException("Can't determine if site already exists."); 
    } 
} 

은 분명히 app.Name이 존재하지 않기 때문에, 나는이를 얻기 위해 무엇을 할 수 있습니까?

답변

2

IIS 용 Microsoft.Web.Administration 및 Microsoft.Web.Management API를 사용하여이 작업을 수행 할 수 있습니다. 그들은 GAC에 없지만 inetsrv 폴더에서 참조해야합니다. 내 컴퓨터에서 그들은 ...에 있습니다

  1. C : \ WINDOWS \ SYSTEM32 \ inetsrv를 \ Microsoft.Web.Administration.dll
  2. C : \ WINDOWS \ SYSTEM32 \ inetsrv를 \ Microsoft.Web.Management.

    APPLIC : 여기

DLL는

class Program 
{ 
    static void Main(string[] args) 
    { 
     ServerManager serverManager = new ServerManager(); 
     foreach (var site in serverManager.Sites) 
     { 
      Console.WriteLine("Site -> " + site.Name); 
      foreach (var application in site.Applications) 
      { 
       Console.WriteLine(" Application-> " + application.Path); 
      } 
     } 


     Console.WriteLine("Press any key..."); 
     Console.ReadKey(true); 
    } 
} 

후속을 열거하는 몇 가지 예제 코드입니다 ations에는 이름이 없으며 루트 사이트 만 IIS에 이름이 있습니다. 응용 프로그램에는 경로 만 있습니다 (사이트의 자식 임). 경로가 "/"이면 응용 프로그램이 사이트의 루트 응용 프로그램입니다. 경로가/이외의 경로 인 경우 사이트의 2 차 + 하위 응용 프로그램입니다. 따라서 Application.Path를 사용하여 원하는 작업을 수행해야합니다.

+0

답변 해 주셔서 감사합니다. 나는 당신이 그 참조가 필요하다는 것을 안다. (왜 내 코드가 애플 리케이션에서 Microsoft.Web.Administration.Application 애플 리케이션을 가지고 있는지). 기본적으로 응용 프로그램의 이름이 'Path'속성으로 표시된다고 말씀 하시겠습니까? – sr28

+0

봤을 때 대답이 업데이트되었지만 예. 응용 프로그램에는 이름이 없으며 경로가 있습니다. –

+0

괜찮아. 후속 조치 주셔서 감사합니다. 그래서 내 목적을 위해 'MyApp'라는 사이트 내에 응용 프로그램이 있으면 application.path == "MyApp"에 대해 확인할 수 있습니까? – sr28