作ろう!!アプリケーションプール
先日のこのブログの記事に掲載したサンプルコードの "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; } |
さて、前回からコードのサンプルを掲載していますが、うまく実行できましたでしょうか?
もしうまくいかない場合でも、後日、動作確認可能なサンプルアプリケーションをソースごとご提供しますので、もう少々お待ちください。