程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#中操作IIS 7.0(1)

C#中操作IIS 7.0(1)

編輯:關於C語言

Microsoft自Windows Vista一起發布了IIS 7.0,這個已經是去年的話題了,隨後,由.NET開發的Web 程序便逐步從IIS 6.0過渡到IIS 7.0上了。IIS 7.0提供了很多比上一版本更多的新特性,包括完全模塊 化的組件、文本文件的配置功能、MMC圖形模式管理工具等等,並且與.Net編程語言結合得更加緊密了, 在新添加的Microsoft.Web.Administration名稱空間中也增加了很多用於管理和訪問IIS的對象,從而使 得通過編程方式操作IIS更加簡便。雖然在IIS 6.0時代我們也可以非常輕松地通過C#來管理服務器的IIS ,但相對來說,現在需要編寫的代碼更少,所能完成的功能更強。以下是我在曾經做的一個項目中所寫的 一個類庫中的一部分,主要實現了對IIS 7.0的操作,包括創建和刪除站點、創建和刪除虛擬目錄、創建 和刪除應用程序池、添加站點默認文檔、判斷站點和虛擬目錄是否存在、以及檢查Bindings信息等。

對於IIS 7.0的介紹讀者如果有興趣的話可以看看下面的兩篇文章,我覺得不錯!

http://blog.joycode.com/scottgu/archive/2007/04/08/100650.ASPx

http://msdn.microsoft.com/en-us/magazine/cc163453.ASPx

不說廢話了,趕緊貼代碼吧。

首先是對站點的管理。我寫了一個相對較為通用的私有方法,然後在對外的方法中給出了調用接口, 包括了創建站點時應用程序池的創建和權限的管理。

CreateSite

/// <summary>
/// Create a new web site.
/// </summary>
/// <param name="siteName"></param>
/// <param name="bindingInfo">"*:&lt;port&gt;:&lt;hostname&gt;" <example>"*:80:myhost.com"</example></param>
/// <param name="physicalPath"></param>
public static void CreateSite(string siteName, string bindingInfo, string physicalPath)
{
    createSite(siteName, "http", bindingInfo, physicalPath, true, siteName + "Pool", ProcessModelIdentityType.NetworkService, null, null, ManagedPipelineMode.Integrated, null);
}

private static void createSite(string siteName, string protocol, string bindingInformation, string physicalPath,
        bool createAppPool, string appPoolName, ProcessModelIdentityType identityType,
        string appPoolUserName, string appPoolPassWord, ManagedPipelineMode appPoolPipelineMode, string managedRuntimeVersion)
{
    using (ServerManager mgr = new ServerManager())
    {
        Site site = mgr.Sites.Add(siteName, protocol, bindingInformation, physicalPath);

        // PROVISION APPPOOL IF NEEDED
        if (createAppPool)
        {
            ApplicationPool pool = mgr.ApplicationPools.Add(appPoolName);
            if (pool.ProcessModel.IdentityType != identityType)
            {
                pool.ProcessModel.IdentityType = identityType;
            }
            if (!String.IsNullOrEmpty(appPoolUserName))
            {
                pool.ProcessModel.UserName = appPoolUserName;
                pool.ProcessModel.Password = appPoolPassWord;
            }
            if (appPoolPipelineMode != pool.ManagedPipelineMode)
            {
                pool.ManagedPipelineMode = appPoolPipelineMode;
            }

            site.Applications["/"].ApplicationPoolName = pool.Name;
        }

        mgr.CommitChanges();
    }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved