programing

ASP에 대한 IIS 사이트 이름을 가져옵니다.NET 웹사이트

powerit 2023. 10. 15. 18:06
반응형

ASP에 대한 IIS 사이트 이름을 가져옵니다.NET 웹사이트

ASP에서.NET 웹 앱 서버에 고유한 IIS에서 만들었을 때 부여된 이름을 찾아보고 싶습니다.저는 웹 사이트의 도메인 이름이 아니라 IIS의 사이트에 부여된 실제 이름에 관심이 없습니다.

IIS6 및 7에 대해 안정적으로 수행할 수 있어야 합니다.

확실히 하기 위해 IIS의 지정된 이름을 말하는 것이지 도메인 이름을 말하는 것이 아니고 가상 디렉터리 경로를 말하는 것이 아닙니다.

갱신하다

Carlos 등이 댓글로 언급한 것처럼 사용하는 것이 좋습니다.HostingEnvironment.SiteName부터GetSiteName사용자가 사용해서는 안 됩니다(문서에 따르면).

구 솔루션

System.Web.Hosting.HostingEnvironment.ApplicationHost.GetSiteName();

@belugabob 과 @CarlosAg 가 이미 언급했듯이 나는 차라리 사용하고 싶습니다.System.Web.Hosting.HostingEnvironment.SiteName대신에System.Web.Hosting.HostingEnvironment.ApplicationHost.GetSiteName()왜냐하면 저는 애플리케이션 호스트이기 때문입니다.GetSiteName 메서드를 직접 호출하지 않습니다! (msdn)

따라서 Hosting Environment를 사용하는 것이 좋습니다.SiteName 속성! (msdn)

설명서에 관해서는 이것이 정답이 되어야 한다고 생각합니다 ;)

다음은 사이트 ID를 검색할 때 관련된 게시물입니다.

다음은 당신에게 도움이 될 수 있는 몇 가지 코드입니다.

using System.DirectoryServices;
using System;

public class IISAdmin
{
   public static void GetWebsiteID(string websiteName)
   {
      DirectoryEntry w3svc = new DirectoryEntry("IIS://localhost/w3svc");

     foreach(DirectoryEntry de in w3svc.Children)
     {
        if(de.SchemaClassName == "IIsWebServer" && de.Properties["ServerComment"][0].ToString() == websiteName)
        {
           Console.Write(de.Name);
        }

     }

  }
  public static void Main()
  {
     GetWebsiteID("Default Web Site");
  }

}

여기 원래 게시물 링크입니다.

IIS7에서 작동할지는 확실하지 않지만 IIS7용 IIS6 호환성 구성 요소를 설치하면 작동합니다.

서버 관리자(Microsoft)를 찾고 있습니다.웹.관리) - IIS 7.0 구성 시스템에 대한 읽기 및 쓰기 액세스를 제공합니다.

마이크로소프트를 통해 반복됩니다.웹.관리.SiteCollection, Site Object를 사용하여 웹 사이트에 대한 참조를 얻고 Name 속성의 값을 읽으십시오.

// Snippet        
using (ServerManager serverManager = new ServerManager()) { 

var sites = serverManager.Sites; 
foreach (Site site in sites) { 
         Console.WriteLine(site.Name); // This will return the WebSite name
}

또한 LINQ를 사용하여 서버 관리자를 조회할 수도 있습니다.사이트 모음(아래 예 참조)

// Start all stopped WebSites using the power of Linq :)
var sites = (from site in serverManager.Sites 
            where site.State == ObjectState.Stopped 
            orderby site.Name 
            select site); 

        foreach (Site site in sites) { 
            site.Start(); 
        } 

참고: Microsoft.Web.관리는 IIS7에서만 작동합니다.

IIS6의 경우 ADSI와 WMI를 모두 사용하여 이 작업을 수행할 수 있지만, ADSI보다 빠른 WMI를 사용하는 것이 좋습니다.WMI를 사용하는 경우 WMI Code Creator 1.0(무료/마이크로소프트 개발)을 살펴봅니다.코드를 생성해 줄 겁니다.

HTH

서버 관리자를 수행해야 합니다.원격 서버에 연결할 때 먼저 원격("serverName")을 엽니다.

기본적으로 이런 일을 하는 것은

            using (ServerManager srvMgr = ServerManager.OpenRemote("serverName"))
            {

            }

msdn 도움말 보기

아래 코드를 이용하실 수 있습니다.

private string WebsiteName()
{
    string websiteName = string.Empty;
    string AppPath = string.Empty;
    AppPath = Context.Request.ServerVariables["INSTANCE_META_PATH"];
    AppPath = AppPath.Replace("/LM/", "IIS://localhost/");
    DirectoryEntry root = new DirectoryEntry(AppPath);
    websiteName = (string)root.Properties["ServerComment"].Value;
    return websiteName;
}

언급URL : https://stackoverflow.com/questions/1654797/get-iis-site-name-from-for-an-asp-net-website

반응형