アプリケーション プールとアプリケーションを作成する Visual Basic アプリケーションがあります。64 ビットの Windows 8 マシンで実行すると、プールとアプリケーションが IIS 8.0 ではなく IIS Express 8.0 で作成されます。\documents\IISExpress で applicationhost.config を開き、そこで変更が行われていることを確認しました。IIS Express ではなく IIS をターゲットにする方法についての洞察をいただければ幸いです。構成アプリケーションは通常、Web サーバーで実行されますが、開発マシンでも動作する必要があります。IIS バージョンを取得するコードは次のとおりです。
Dim rootId As DirectoryEntry = GetDirectoryEntry(String.Format("IIS://{0}/W3SVC/Info", DomainName))
If rootId IsNot Nothing Then
Try
If rootId.Properties.Contains("MajorIIsVersionNumber") = True Then
Dim iisVal As String = rootId.Properties("MajorIIsVersionNumber").Value.ToString
上記の DomainName に localhost とマシン名の両方を使用すると、IIS Express に接続されます。アプリケーション プールを作成する関数を次に示します。poolName 変数を設定するループは、IIS Express を使用しているかどうかを判断するのに役立つデバッグ用です。繰り返しますが、動作しますが、IIS Express にプールが作成されます。
Private Function GetOrCreateAppPool(ByRef mgr As ServerManager, ByVal domainPath As String, ByVal appPoolName As String, ByVal addAppPool As Boolean) As ApplicationPool
' First see if app pool exists
Dim appPoolId As ApplicationPool = Nothing
Dim poolId As ApplicationPool
Dim poolName As String
For Each poolId In mgr.ApplicationPools
poolName = poolId.Name
Next
appPoolId = mgr.ApplicationPools(appPoolName)
If appPoolId Is Nothing Then
appPoolId = mgr.ApplicationPools.Add(appPoolName)
If appPoolId IsNot Nothing Then
With appPoolId
.AutoStart = True
.ManagedPipelineMode = ManagedPipelineMode.Integrated
.ManagedRuntimeVersion = "v4.0"
.ProcessModel.IdentityType = ProcessModelIdentityType.NetworkService
.ProcessModel.IdleTimeout = TimeSpan.FromMinutes(240)
.Recycling.PeriodicRestart.Time = TimeSpan.FromMinutes(0)
.Recycling.PeriodicRestart.Schedule.Add(TimeSpan.Parse("03:00:00"))
End With
mgr.CommitChanges()
End If
End If
Return appPoolId
End Function
任意の支援をいただければ幸いです。