作ろう!!アプリケーションプール


先日のこのブログの記事に掲載したサンプルコードの “Web サイトの作成” のコメントに “(アプリケーションプールは自動生成される)” とありますが、すみません、これはコメントミスで、実際は自動生成されません。

Web サイトを単純に作成した場合は、規定の設定が継承され、DefaultAppPool が設定されます。

作成する Web サイト、あるいは既存の Web サイトに任意のアプリケーションプールを設定するには、あらかじめアプリケーションプールを作成しておき、それを設定するようにします。

というわけで、アプリケーションプールを作成するためのサンプルーコードは以下です。2 つメソッドが定義されていますが、どちらを使っても OK ですので用途に合わせてお使いください。

サンプル(C#) : アプリケーションプールの作成

//アプリケーションプールの作成:其の壱
public Exception CreateApplicationPool(string poolName, bool autoStart, string modeType)
{
    Exception returnExp = null;
    try
    {
        using (ServerManager serverManager = new ServerManager())
        {
            Configuration config = serverManager.GetApplicationHostConfiguration();
            ConfigurationSection applicationPoolsSection = config.GetSection(“system.applicationHost/applicationPools”);
            ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();
            ConfigurationElement addElement = applicationPoolsCollection.CreateElement(“add”);
            addElement[“name”] = poolName;
            addElement[“autoStart”] = autoStart;
            addElement[“managedPipelineMode”] = modeType;
            applicationPoolsCollection.Add(addElement);
            serverManager.CommitChanges();
        }
    }
    catch (Exception exp)
    {
        returnExp = exp;
    }

    return returnExp;
 }

//アプリケーションプールの作成:其の弐
public Exception CreateApplicationPool(string poolName, bool autoStart, ManagedPipelineMode modeType, ProcessModelIdentityType identityType)
{
    Exception returnExp = null;
    try
    {
        using (ServerManager serverManager = new ServerManager())
        {
            serverManager.ApplicationPools.Add(poolName);
            ApplicationPool appPool = serverManager.ApplicationPools[poolName];
            appPool.AutoStart = autoStart;
            appPool.ManagedPipelineMode = modeType;
            appPool.ProcessModel.IdentityType = identityType;
            serverManager.CommitChanges(); 
         }
    }
 catch (Exception exp)
 {
        returnExp = exp;
 }

    return returnExp;
}

サンプル(C#) : アプリケーションプールを作成するメソッドの呼び出し方

“其の壱”の場合 (引数: プール名, 自動的に開始するか否か,プールの動作モード)
Exception exp = CreateApplicationPool(“myAppPool”, true, “Integrated”);

“其の弐”の場合 (引数:プール名, 自動的に開始するか否か,プールの動作モード,プールの動作アカウント種別)
using Microsoft.Web.Administration;
Exception exp = CreateApplicationPool(“myAppPool”, true,  ManagedPipelineMode.Integrated,ProcessModelIdentityType.ApplicationPoolIdentity);

Web サイトのアプリケーションに任意のアプリケーションプールを割り当てるメソッドのサンプルは以下の通りです。呼び出す際には、第一引数に サイト名, 第二引数に アプリケーションプール名を指定します。

このメソッドは、既存の Web サイトのアプリケーションプールの置き換えにも使用できます。

サンプル(C#):Web サイトへのアプリケーションプールの適用

//Web サイトに任意のアプリケーションプールを設定する
public Exception ChangeApplicationPool(string siteName, string AppPoolName)
{
    Exception returnExp = null;
    try
     {
       ServerManager serverManager = new ServerManager();
           serverManager.Sites[siteName].Applications[0].ApplicationPoolName = AppPoolName;
           serverManager.CommitChanges();
      }
      catch(Exception exp) 
      {
           returnExp = exp; 
      }
      return returnExp;
 } 

さて、前回からコードのサンプルを掲載していますが、うまく実行できましたでしょうか?

もしうまくいかない場合でも、後日、動作確認可能なサンプルアプリケーションをソースごとご提供しますので、もう少々お待ちください。

 

Real Time Analytics

Clicky

Comments (0)

Skip to main content