日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 操作IIS服务器Demo

發布時間:2023/12/10 C# 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 操作IIS服务器Demo 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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 錯誤

? ? /// </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)

? ? ? ? ? ? {

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

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

? ? ? ? ? ? }

? ? ? ? }


? ? ? ? /// <summary>

? ? ? ? /// 創建虛擬目錄網站

? ? ? ? /// </summary>

? ? ? ? /// <param name="webSiteName">網站名稱</param>

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

? ? ? ? /// <param name="domainPort">站點+端口,如192.168.1.23:90</param>

? ? ? ? /// <param name="isCreateAppPool">是否創建新的應用程序池</param>

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

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

? ? ? ? {

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

? ? ? ? ? ? // 為新WEB站點查找一個未使用的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; }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? // 創建WEB站點

? ? ? ? ? ? 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");

? ? ? ? ? ? // 創建應用程序虛擬目錄


? ? ? ? ? ? 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:經典模式

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

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

? ? ? ? ? ? }


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

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

? ? ? ? ? ? return siteID;

? ? ? ? }


? ? ? ? /// <summary>

? ? ? ? /// 得到網站的物理路徑

? ? ? ? /// </summary>

? ? ? ? /// <param name="rootEntry">網站節點</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>

? ? ? ? /// 獲取站點名

? ? ? ? /// </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))//如果有多個綁定站點時

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

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

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

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

? ? ? ? ? ? ? ? ? ? ? ? else//只有一個綁定站點

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

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

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

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

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

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

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

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? return iisList;

? ? ? ? }



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

? ? ? ? {

? ? ? ? ? ? bool issucess = false;

? ? ? ? ? ? try

? ? ? ? ? ? {

? ? ? ? ? ? ? ? //創建一個新程序池

? ? ? ? ? ? ? ? DirectoryEntry newpool;

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

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


? ? ? ? ? ? ? ? //設置屬性 訪問用戶名和密碼 一般采取默認方式

? ? ? ? ? ? ? ? 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>

? ? ? ? /// 建立程序池后關聯相應應用程序及虛擬目錄

? ? ? ? /// </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"))

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? //設置應用程序程序池 先獲得應用程序 在設定應用程序程序池

? ? ? ? ? ? ? ? ? ? //第一次測試根目錄

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

? ? ? ? ? ? ? ? ? ? {

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

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

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

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

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

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

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

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //【測試成功通過】

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

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

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

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

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

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }



? ? ? ? /// <summary>

? ? ? ? /// 判斷object對象是否為數組

? ? ? ? /// </summary>

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

? ? ? ? {

? ? ? ? ? ? return o is Array;

? ? ? ? }

? ? }

}


總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。