日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

C# 操作IIS服务器Demo

發(fā)布時(shí)間:2023/12/10 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 操作IIS服务器Demo 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

using System;

using System.Collections;

using System.Collections.Generic;

using System.DirectoryServices;

using System.Linq;

using System.Net;

using System.Text;

using System.Threading.Tasks;


namespace IISControlHelper

{

? ? /// <summary>

? ? /// IIS 操作方法集合

? ? /// http://blog.csdn.net/ts1030746080/article/details/8741399 錯(cuò)誤

? ? /// </summary>

? ? public class IISWorker

? ? {

? ? ? ? private static string HostName = "localhost";


? ? ? ? /// <summary>

? ? ? ? /// 獲取本地IIS版本

? ? ? ? /// </summary>

? ? ? ? /// <returns></returns>

? ? ? ? public static string GetIIsVersion()

? ? ? ? {

? ? ? ? ? ? try

? ? ? ? ? ? {

? ? ? ? ? ? ? ? DirectoryEntry entry = new DirectoryEntry("IIS://" + HostName + "/W3SVC/INFO");

? ? ? ? ? ? ? ? string version = entry.Properties["MajorIISVersionNumber"].Value.ToString();

? ? ? ? ? ? ? ? return version;

? ? ? ? ? ? }

? ? ? ? ? ? catch (Exception se)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? //說(shuō)明一點(diǎn):IIS5.0中沒(méi)有(int)entry.Properties["MajorIISVersionNumber"].Value;屬性,將拋出異常 證明版本為 5.0

? ? ? ? ? ? ? ? return string.Empty;

? ? ? ? ? ? }

? ? ? ? }


? ? ? ? /// <summary>

? ? ? ? /// 創(chuàng)建虛擬目錄網(wǎng)站

? ? ? ? /// </summary>

? ? ? ? /// <param name="webSiteName">網(wǎng)站名稱(chēng)</param>

? ? ? ? /// <param name="physicalPath">物理路徑</param>

? ? ? ? /// <param name="domainPort">站點(diǎn)+端口,如192.168.1.23:90</param>

? ? ? ? /// <param name="isCreateAppPool">是否創(chuàng)建新的應(yīng)用程序池</param>

? ? ? ? /// <returns></returns>

? ? ? ? public static int CreateWebSite(string webSiteName, string physicalPath, string domainPort,bool isCreateAppPool)

? ? ? ? {

? ? ? ? ? ? DirectoryEntry root = new DirectoryEntry("IIS://" + HostName + "/W3SVC");

? ? ? ? ? ? // 為新WEB站點(diǎn)查找一個(gè)未使用的ID

? ? ? ? ? ? int siteID = 1;

? ? ? ? ? ? foreach (DirectoryEntry e in root.Children)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? if (e.SchemaClassName == "IIsWebServer")

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? int ID = Convert.ToInt32(e.Name);

? ? ? ? ? ? ? ? ? ? if (ID >= siteID) { siteID = ID + 1; }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? // 創(chuàng)建WEB站點(diǎn)

? ? ? ? ? ? DirectoryEntry site = (DirectoryEntry)root.Invoke("Create", "IIsWebServer", siteID);

? ? ? ? ? ? site.Invoke("Put", "ServerComment", webSiteName);

? ? ? ? ? ? site.Invoke("Put", "KeyType", "IIsWebServer");

? ? ? ? ? ? site.Invoke("Put", "ServerBindings", domainPort + ":");

? ? ? ? ? ? site.Invoke("Put", "ServerState", 2);

? ? ? ? ? ? site.Invoke("Put", "FrontPageWeb", 1);

? ? ? ? ? ? site.Invoke("Put", "DefaultDoc", "Default.html");

? ? ? ? ? ? // site.Invoke("Put", "SecureBindings", ":443:");

? ? ? ? ? ? site.Invoke("Put", "ServerAutoStart", 1);

? ? ? ? ? ? site.Invoke("Put", "ServerSize", 1);

? ? ? ? ? ? site.Invoke("SetInfo");

? ? ? ? ? ? // 創(chuàng)建應(yīng)用程序虛擬目錄


? ? ? ? ? ? DirectoryEntry siteVDir = site.Children.Add("Root", "IISWebVirtualDir");

? ? ? ? ? ? siteVDir.Properties["AppIsolated"][0] = 2;

? ? ? ? ? ? siteVDir.Properties["Path"][0] = physicalPath;

? ? ? ? ? ? siteVDir.Properties["AccessFlags"][0] = 513;

? ? ? ? ? ? siteVDir.Properties["FrontPageWeb"][0] = 1;

? ? ? ? ? ? siteVDir.Properties["AppRoot"][0] = "LM/W3SVC/" + siteID + "/Root";

? ? ? ? ? ? siteVDir.Properties["AppFriendlyName"][0] = "Root";


? ? ? ? ? ? if (isCreateAppPool)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? DirectoryEntry apppools = new DirectoryEntry("IIS://" + HostName + "/W3SVC/AppPools");


? ? ? ? ? ? ? ? DirectoryEntry newpool = apppools.Children.Add(webSiteName, "IIsApplicationPool");

? ? ? ? ? ? ? ? newpool.Properties["AppPoolIdentityType"][0] = "4"; //4

? ? ? ? ? ? ? ? newpool.Properties["ManagedPipelineMode"][0] = "0"; //0:集成模式 1:經(jīng)典模式

? ? ? ? ? ? ? ? newpool.CommitChanges();

? ? ? ? ? ? ? ? siteVDir.Properties["AppPoolId"][0] = webSiteName;

? ? ? ? ? ? }


? ? ? ? ? ? siteVDir.CommitChanges();

? ? ? ? ? ? site.CommitChanges();

? ? ? ? ? ? return siteID;

? ? ? ? }


? ? ? ? /// <summary>

? ? ? ? /// 得到網(wǎng)站的物理路徑

? ? ? ? /// </summary>

? ? ? ? /// <param name="rootEntry">網(wǎng)站節(jié)點(diǎn)</param>

? ? ? ? /// <returns></returns>

? ? ? ? public static string GetWebsitePhysicalPath(DirectoryEntry rootEntry)

? ? ? ? {

? ? ? ? ? ? string physicalPath = "";

? ? ? ? ? ? foreach (DirectoryEntry childEntry in rootEntry.Children)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? if ((childEntry.SchemaClassName == "IIsWebVirtualDir") && (childEntry.Name.ToLower() == "root"))

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? if (childEntry.Properties["Path"].Value != null)

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? physicalPath = childEntry.Properties["Path"].Value.ToString();

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? physicalPath = "";

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? return physicalPath;

? ? ? ? }


? ? ? ? /// <summary>

? ? ? ? /// 獲取站點(diǎn)名

? ? ? ? /// </summary>

? ? ? ? public static List<IISInfo> GetServerBindings()

? ? ? ? {

? ? ? ? ? ? List<IISInfo> iisList = new List<IISInfo>();

? ? ? ? ? ? string entPath = String.Format("IIS://{0}/w3svc", HostName);

? ? ? ? ? ? DirectoryEntry ent = new DirectoryEntry(entPath);

? ? ? ? ? ? foreach (DirectoryEntry child in ent.Children)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? if (child.SchemaClassName.Equals("IIsWebServer", StringComparison.OrdinalIgnoreCase))

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? if (child.Properties["ServerBindings"].Value != null)

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? object objectArr = child.Properties["ServerBindings"].Value;

? ? ? ? ? ? ? ? ? ? ? ? string serverBindingStr = string.Empty;

? ? ? ? ? ? ? ? ? ? ? ? if (IsArray(objectArr))//如果有多個(gè)綁定站點(diǎn)時(shí)

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? object[] objectToArr = (object[])objectArr;

? ? ? ? ? ? ? ? ? ? ? ? ? ? serverBindingStr = objectToArr[0].ToString();

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? else//只有一個(gè)綁定站點(diǎn)

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? serverBindingStr = child.Properties["ServerBindings"].Value.ToString();

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? IISInfo iisInfo = new IISInfo();

? ? ? ? ? ? ? ? ? ? ? ? iisInfo.DomainPort = serverBindingStr;

? ? ? ? ? ? ? ? ? ? ? ? iisInfo.AppPool = child.Properties["AppPoolId"].Value.ToString();//應(yīng)用程序池

? ? ? ? ? ? ? ? ? ? ? ? iisList.Add(iisInfo);

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? return iisList;

? ? ? ? }



? ? ? ? public static bool CreateAppPool(string appPoolName, string Username, string Password)

? ? ? ? {

? ? ? ? ? ? bool issucess = false;

? ? ? ? ? ? try

? ? ? ? ? ? {

? ? ? ? ? ? ? ? //創(chuàng)建一個(gè)新程序池

? ? ? ? ? ? ? ? DirectoryEntry newpool;

? ? ? ? ? ? ? ? DirectoryEntry apppools = new DirectoryEntry("IIS://" + HostName + "/W3SVC/AppPools");

? ? ? ? ? ? ? ? newpool = apppools.Children.Add(appPoolName, "IIsApplicationPool");


? ? ? ? ? ? ? ? //設(shè)置屬性 訪問(wèn)用戶(hù)名和密碼 一般采取默認(rèn)方式

? ? ? ? ? ? ? ? newpool.Properties["WAMUserName"][0] = Username;

? ? ? ? ? ? ? ? newpool.Properties["WAMUserPass"][0] = Password;

? ? ? ? ? ? ? ? newpool.Properties["AppPoolIdentityType"][0] = "3";

? ? ? ? ? ? ? ? newpool.CommitChanges();

? ? ? ? ? ? ? ? issucess = true;

? ? ? ? ? ? ? ? return issucess;

? ? ? ? ? ? }

? ? ? ? ? ? catch // (Exception ex)?

? ? ? ? ? ? {

? ? ? ? ? ? ? ? return false;

? ? ? ? ? ? }

? ? ? ? }



? ? ? ? /// <summary>

? ? ? ? /// 建立程序池后關(guān)聯(lián)相應(yīng)應(yīng)用程序及虛擬目錄

? ? ? ? /// </summary>

? ? ? ? public static void SetAppToPool(string appname,string poolName)

? ? ? ? {

? ? ? ? ? ? //獲取目錄

? ? ? ? ? ? DirectoryEntry getdir = new DirectoryEntry("IIS://localhost/W3SVC");

? ? ? ? ? ? foreach (DirectoryEntry getentity in getdir.Children)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? if (getentity.SchemaClassName.Equals("IIsWebServer"))

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? //設(shè)置應(yīng)用程序程序池 先獲得應(yīng)用程序 在設(shè)定應(yīng)用程序程序池

? ? ? ? ? ? ? ? ? ? //第一次測(cè)試根目錄

? ? ? ? ? ? ? ? ? ? foreach (DirectoryEntry getchild in getentity.Children)

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? if (getchild.SchemaClassName.Equals("IIsWebVirtualDir"))

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? //找到指定的虛擬目錄.

? ? ? ? ? ? ? ? ? ? ? ? ? ? foreach (DirectoryEntry getsite in getchild.Children)

? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (getsite.Name.Equals(appname))

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //【測(cè)試成功通過(guò)】

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? getsite.Properties["AppPoolId"].Value = poolName;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? getsite.CommitChanges();

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }



? ? ? ? /// <summary>

? ? ? ? /// 判斷object對(duì)象是否為數(shù)組

? ? ? ? /// </summary>

? ? ? ? public static bool IsArray(object o)

? ? ? ? {

? ? ? ? ? ? return o is Array;

? ? ? ? }

? ? }

}


總結(jié)

以上是生活随笔為你收集整理的C# 操作IIS服务器Demo的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。