Error when deploying to IIS6 on Win Server 2003 R2 SP2 32 Bit from Win7 64

I get a COM exception related to the deployment of a website on the as-described tentacle platform.

I tried to install the Windows Management Framework but the install told me that it was already present. I am running the server on my workstation (Win 7 64 bit) at the moment for evaluation I’m not aware of any other pre-requisites? I can’t think of what the problem here might be. Things I’ve found relating to this class suggest that its related to the IIS7 configuration system, but IIS7 is not installed on this machine. Not sure how Octopus decides what convention to use.

I am currently evaluating Octopus and hoping to get management to pay for a licensce for us.

The full error log is below:

2012-12-31 13:49:56 INFO Updating IIS website named 'Default Web Site/RetailRota’2012-12-31 13:49:56 ERROR System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {2B72133B-3F5B-4602-8952-803546CE3344} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). at Microsoft.Web.Administration.ConfigurationManager.CreateWritableAdminManager(WebConfigurationMap webConfigMap, String configPathToEdit, Boolean isAdminConfig) at Microsoft.Web.Administration.ConfigurationManager.CreateConfiguration(WebConfigurationMap configMap, String configPathToEdit, Boolean isAdminConfig) at Microsoft.Web.Administration.ConfigurationManager.GetConfiguration(String rawConfigurationPath, String cacheKey, Boolean isAdminConfig) at Microsoft.Web.Administration.ConfigurationManager.GetApplicationHostConfiguration() at Microsoft.Web.Administration.ServerManager.get_SitesSection() at Microsoft.Web.Administration.ServerManager.get_Sites() at Octopus.Tentacle.Deployment.Integration.Iis.WebServerSevenSupport.FindVirtualDirectory(String webSiteName, String virtualDirectoryPath, Action`1 found) in c:\w\e6923628be6eaf72\source\Octopus.Tentacle\Deployment\Integration\Iis\WebServerSevenSupport.cs:line 79 at Octopus.Tentacle.Deployment.Integration.Iis.WebServerSevenSupport.ChangeHomeDirectory(String webSiteName, String virtualDirectoryPath, String newWebRootPath) in c:\w\e6923628be6eaf72\source\Octopus.Tentacle\Deployment\Integration\Iis\WebServerSevenSupport.cs:line 68 at Octopus.Tentacle.Deployment.Integration.Iis.InternetInformationServer.OverwriteHomeDirectory(String iisWebSiteNameAndVirtualDirectory, String path) in c:\w\e6923628be6eaf72\source\Octopus.Tentacle\Deployment\Integration\Iis\InternetInformationServer.cs:line 39 at Octopus.Tentacle.Deployment.Conventions.IisWebSite.Install(ConventionContext context) in c:\w\e6923628be6eaf72\source\Octopus.Tentacle\Deployment\Conventions\IisWebSite.cs:line 54 at Octopus.Tentacle.Deployment.DeploymentController.RunInstallConventions(ConventionContext context) in c:\w\e6923628be6eaf72\source\Octopus.Tentacle\Deployment\DeploymentController.cs:line 116 at Octopus.Tentacle.Deployment.DeploymentController.Execute(PackageMetadata package, VariableDictionary variables, IActivityLog log) in c:\w\e6923628be6eaf72\source\Octopus.Tentacle\Deployment\DeploymentController.cs:line 612012-12-31 13:49:56 ERROR Running rollback conventions…

Also, from event log:

2012-12-31 13:42:33,443 [4] ERROR Octopus [(null)] - Error while executing job: Retrieving the COM class factory for component with CLSID {2B72133B-3F5B-4602-8952-803546CE3344} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {2B72133B-3F5B-4602-8952-803546CE3344} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
at Microsoft.Web.Administration.ConfigurationManager.CreateWritableAdminManager(WebConfigurationMap webConfigMap, String configPathToEdit, Boolean isAdminConfig)
at Microsoft.Web.Administration.ConfigurationManager.CreateConfiguration(WebConfigurationMap configMap, String configPathToEdit, Boolean isAdminConfig)
at Microsoft.Web.Administration.ConfigurationManager.GetConfiguration(String rawConfigurationPath, String cacheKey, Boolean isAdminConfig)
at Microsoft.Web.Administration.ConfigurationManager.GetApplicationHostConfiguration()
at Microsoft.Web.Administration.ServerManager.get_SitesSection()
at Microsoft.Web.Administration.ServerManager.get_Sites()
at Octopus.Tentacle.Deployment.Integration.Iis.WebServerSevenSupport.FindVirtualDirectory(String webSiteName, String virtualDirectoryPath, Action`1 found) in c:\w\e6923628be6eaf72\source\Octopus.Tentacle\Deployment\Integration\Iis\WebServerSevenSupport.cs:line 79
at Octopus.Tentacle.Deployment.Integration.Iis.WebServerSevenSupport.ChangeHomeDirectory(String webSiteName, String virtualDirectoryPath, String newWebRootPath) in c:\w\e6923628be6eaf72\source\Octopus.Tentacle\Deployment\Integration\Iis\WebServerSevenSupport.cs:line 68
at Octopus.Tentacle.Deployment.Integration.Iis.InternetInformationServer.OverwriteHomeDirectory(String iisWebSiteNameAndVirtualDirectory, String path) in c:\w\e6923628be6eaf72\source\Octopus.Tentacle\Deployment\Integration\Iis\InternetInformationServer.cs:line 39
at Octopus.Tentacle.Deployment.Conventions.IisWebSite.Install(ConventionContext context) in c:\w\e6923628be6eaf72\source\Octopus.Tentacle\Deployment\Conventions\IisWebSite.cs:line 54
at Octopus.Tentacle.Deployment.DeploymentController.RunInstallConventions(ConventionContext context) in c:\w\e6923628be6eaf72\source\Octopus.Tentacle\Deployment\DeploymentController.cs:line 116
at Octopus.Tentacle.Deployment.DeploymentController.Execute(PackageMetadata package, VariableDictionary variables, IActivityLog log) in c:\w\e6923628be6eaf72\source\Octopus.Tentacle\Deployment\DeploymentController.cs:line 79
at Octopus.Tentacle.Services.Jobs.Deployment.DeployPackageJobExecutor.Execute(DeployPackageJob job, JobState state) in c:\w\e6923628be6eaf72\source\Octopus.Tentacle\Services\Jobs\Deployment\DeployPackageJobExecutor.cs:line 20
at CallSite.Target(Closure , CallSite , Object , Object , JobState )
at Octopus.Tentacle.Services.Jobs.JobQueue.RunDeploymentsOnBackgroundThread(Object ignored) in c:\w\e6923628be6eaf72\source\Octopus.Tentacle\Services\Jobs\JobQueue.cs:line 79

right, having had a prod around with JustDecompile, it would appear that because we have the remote administration web installed on this server, Octopus is assuming that it’s IIS 7. This obviously doesn’t suffice so do we need to be able to override this with a variable? Possibly in combination with a better detection method?

out-of-office-fail

Hi Tobias,

Thanks for the bug report, I’ve added it to the backlog here: https://trello.com/card/override-the-iis-6-7-detection-code-with-a-variable-to-specify-the-version/4e907de70880ba000079b75c/244

In the mean time you may need to resort to using PowerShell in your Deploy.ps1 to update the site manually.

Paul