.Net은 실제로 이 작업을 매우 잘 수행합니다. FCL은 이 작업을 완료하는 데 도움이 되는 많은 클래스를 제공하여 개발 작업을 매우 간단하고 행복하게 만듭니다. IIS를 제어하기 위한 프로그래밍은 실제로 매우 간단합니다. ASP와 마찬가지로 .Net은 IIS를 작동하기 위해 ADSI를 사용해야 하지만 현재로서는 더 이상 GetObject가 필요하지 않습니다. 왜냐하면 .Net은 더 강력한 기능을 갖춘 새로운 기능을 제공하기 때문입니다.
System.DirectoryServices 네임스페이스에는 Active Directory에 액세스할 수 있는 강력한 기능을 제공하는 DirectoryEntry, DirectoryEntries 등 몇 가지 강력한 기능이 포함되어 있습니다. 이러한 클래스를 사용하면 IIS, LDAP, NDS 및 WinNT를 작동할 수 있습니다
. 여기서는 IIS의 제어에 대해 이야기하겠습니다. 일반적으로 우리가 IIS를 운영할 때 가상 디렉터리를 운영하는 경우가 많기 때문에 이를 주요 내용으로 나열하겠습니다.
먼저 IIS의 계층 구조를 이해해야 합니다. 다음은 IIS의 계층 구조를 잘 설명하는 해외에서 찾은 그림입니다.
[htmChina:Image id=Image1|12][/htmChina:Image]
IIS의 제어 구문을 이해하려면 위 그림을 이해하고 IIS 메타데이터(메타베이스)의 계층 구조를 이해해야 합니다. 그래프의 각 노드를 키라고 하며 각 키에는 하나 이상의 값이 포함될 수 있습니다. 이러한 값을 속성이라고 합니다. IIS 메타데이터의 키는 IIS의 요소와 일치하므로 메타데이터 속성 설정은 다음과 같습니다. 데이터의 값은 IIS의 설정에 영향을 미칩니다. 이것이 우리 프로그래밍의 기본 아이디어이자 핵심입니다.
또한 스키마(Schema)의 개념도 이해해야 합니다. 이는 IIS의 아키텍처 이름을 나타냅니다. 즉, IIS 메타데이터의 키 유형, 특히 각 노드의 유형을 이해할 수 있습니다. IIS에는 가상 디렉터리, 일반 디렉터리, 파일이 있으며 이는 모두 IIS의 요소이며 이를 구별하는 레이블은 스키마입니다. 예를 들어 가상 디렉터리의 스키마는 "IIsVirtualDir"이고 일반 디렉터리는 "IIsWebDir"입니다. 이러한 방식으로 디렉터리를 추가하거나 삭제할 때 IIS는 가상 디렉터리를 추가하는지 일반 디렉터리를 추가하는지 여부를 알게 됩니다.
가상 디렉터리 만들기
DirectoryEntry는 .Net이 우리에게 제공하는 훌륭한 선물입니다. 이름만 보아도 디렉터리 항목의 기능을 알 수 있습니다. ADSI를 사용해 본 사람이라면 IIS와 WinNT를 운영할 때 해당 경로도 제공해야 한다는 것을 알고 있습니다. IIS를 운영할 때 이 경로의 형식은
IIS://ComputerName/Service/Website/Directory
ComputerName입니다. 서버 이름은 이름이거나 IP일 수 있습니다. 가장 일반적으로 사용되는 이름은 localhost입니다.
서비스: 운영하는 서버입니다. IIS에는 웹, FTP, SMTP 서비스가 있습니다. 주로 IIS의 웹 기능을 운영하므로 여기서는 FTP인 경우 "MSFTPSVC"여야 합니다.
웹사이트: IIS 서비스에는 여러 사이트가 포함될 수 있습니다. 이는 작업을 설정하는 데 사용되는 사이트입니다. 그 값은 숫자이고 기본값은 1이며 기본 사이트를 나타내며, 다른 사이트가 있으면 1부터 시작하는 식입니다.
디렉토리: 말할 필요도 없이 사이트의 최상위 디렉토리는 일반적으로 "ROOT"이고 다른 디렉토리는 그 하위 디렉토리입니다.
먼저 사이트의 최상위 디렉터리(루트 디렉터리)를 가져옵니다.
DirectoryEntry rootfolder = new DirectoryEntry("IIS://localhost/W3SVC/1/ROOT");
이 개체를 만들 때 예외가 발생하지 않으면 이는 다음을 의미합니다. 이 디렉토리는 실제로 존재합니다.
새 가상 디렉터리를 추가해 보겠습니다. 예를 들어 "Aspcn"을 추가하려고 합니다.
DirectoryEntry newVirDir = rootfolder.Children.Add("Aspcn", "IIsWebVirtualDir");
newVirDir.Invoke("AppCreate",true);
newVirDir.CommitChanges();
루트폴더.CommitChanges();
디렉터리를 만드는 아이디어는 매우 간단합니다. 즉, 루트 디렉터리(rootfolder.Children)의 하위 집합에 다른 레코드를 추가하는 것입니다. 여기서는 DirectoryEntries 클래스의 Add 메서드가 사용됩니다. 새로 추가된 디렉터리 중 하나는 가상 디렉터리의 이름이고, 두 번째 매개 변수는 추가한 디렉터리 유형을 나타내는 스키마의 클래스 이름입니다. 그런 다음 DirectoryEntry의 Invoke 메서드를 사용하여 ADSI의 "AppCreate" 메서드를 호출하여 실제로 디렉터리를 만듭니다(이 단계를 거치지 않고도 디렉터리를 성공적으로 만들 수 있는 것처럼 보이지만 안전을 위해 모든 사람이 이를 사용해야 함). 마지막으로 새 항목을 호출하면 루트 디렉터리의 CommitChanges 메서드가 이 작업을 확인합니다.
새 디렉터리를 만들 때 이 디렉터리의 속성에 값을 동시에 할당할 수도 있지만, 실제 경험에 따르면 새 디렉터리를 만들 때 값을 할당하면 이렇게 하지 않는 것이 가장 좋습니다. , 성공적으로 할당할 수 없는 속성이 많이 있습니다. 예를 들어 중요한 속성은 디렉터리의 Path 속성을 나타냅니다. 따라서 Feidao에서는 먼저 디렉터리를 생성한 다음 값을 할당하는 것, 즉 디렉터리 정보를 업데이트할 것을 권장합니다.
가상 디렉터리 업데이트
모든 사람이 IIS에 익숙하고 읽기 가능(AccessRead), 쓰기 가능(AccessWrite), 실행 가능(AccessExecute) 등과 같은 IIS의 몇 가지 중요한 설정을 이해하고 있다고 생각합니다. 이는 DirectoryEntry의 Properties 속성 컬렉션에 값을 할당하여 달성할 수 있습니다. 할당은 두 가지 방법으로 수행할 수 있습니다.
첫 번째는 다음과 같이 Properties 컬렉션의 Add 메서드를 호출하는 것입니다.
두 번째는 첫 번째 인덱스 값에 값을 할당하는 것입니다
.
:
dir.Properties["AccessRead"][0] = true
; 그것은 당신의 선호도에 달려 있습니다.
값을 할당하기 전에 할당할 대상을 결정해야 합니다. 여기서는 다음과 같은 DirectoryEntries 클래스의 Find 메서드를 사용합니다.
DirectoryEntry
de = rootfolder.Children.Find("Aspcn", "IIsVirtualDir");
찾았습니다. 할당할 준비가 되었습니다. 값을 할당할 때 잘 살펴보세요. 가상 디렉터리에는 많은 속성 값이 있을 수 있으며, 이를 많이 확인할 수 있습니다. . : (너무 많아서 반복하지 않겠습니다. Microsoft 홈페이지에서 확인하실 수 있습니다.)
가장 많이 사용되는 것은 AccessRead, AccessWrite, AccessExecute, AccessScript, DefaultDoc, EnableDefaultDoc, Path
입니다
.
가상 디렉터리도 매우 간단합니다. 삭제하려는 가상 디렉터리를 찾은 다음 AppDelete 메서드를 호출하면 됩니다.
DirectoryEntry de = rootfolder.Children.Find("Aspcn","IIsVirtualDir");
de.Invoke("AppDelete",true);
루트폴더.CommitChanges();
또 다른 방법은 루트 디렉터리의 삭제 메서드를 호출하는 것입니다.
객체[] paras = 새 객체[2];
paras[0] = "IIsWebVirtualDir"; //작업이 가상 디렉터리임을 나타냅니다.
paras[1] = "Aspcn";
rootfolder.Invoke("삭제",paras);
루트폴더.CommitChanges();