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)
설명서에 관해서는 이것이 정답이 되어야 한다고 생각합니다 ;)
다음은 당신에게 도움이 될 수 있는 몇 가지 코드입니다.
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"))
{
}
아래 코드를 이용하실 수 있습니다.
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
'programing' 카테고리의 다른 글
Apache POI를 사용하여 Excel Sheet 복사 (0) | 2023.10.15 |
---|---|
열의 조건에 따라 데이터 프레임의 행 부분 집합/필터링 (0) | 2023.10.15 |
플러그인 없이 각도 4의 페이지 앵커까지 스크롤을 부드럽게 하는 방법은 무엇입니까? (0) | 2023.10.15 |
CSS 파일 차단: MIME 유형 불일치(X-Content-Type-Options:nosniff) (0) | 2023.10.15 |
jquery validate를 사용할 수 있도록 부트스트랩 모달이 열려 있는지 확인하는 방법은 무엇입니까? (0) | 2023.10.10 |