"The configuration object is read only" in web deployment

Hi all,

I’ve been beefing up my deployment process today for a web application pair that I am deploying to an IIS server. Up until today I have been using the “Deploy a NuGet package” option with the “IIS home directory” feature. The problem with this simple set up is that whenever I added a new server as a deployment target, I needed to go through and add the IIS virtual directory manually to my SSL Website.

To address this I have added a few steps based on the community step templates “File System - Create Folder” and “IIS Application - Create”. My process is:

  1. Create folder C:\inetpub\wwwrootssl\MyWebApp
  2. Create virtual directory SSL Web Site\MyWebApp pointing at this folder
  3. Deploy Octopus package of MyWebApp to SSL Web Site\MyWebApp

On the 3rd step, I get the following error and I’m not sure what I need to do to fix it:

Updating IIS website named 'SSL Web Site/MyWebSite’
Fatal 07:25:28
The configuration object is read only, because it has been committed by a call to ServerManager.CommitChanges(). If write access is required, use ServerManager to get a new reference.
System.InvalidOperationException: The configuration object is read only, because it has been committed by a call to ServerManager.CommitChanges(). If write access is required, use ServerManager to get a new reference.
at Microsoft.Web.Administration.Configuration.SetDirty()
at Microsoft.Web.Administration.ConfigurationElement.SetAttributeValue(String attributeName, Object value)
at Octopus.Tentacle.Integration.Iis.WebServerSevenSupport.<>c__DisplayClass10.b__f(VirtualDirectory found) in y:\work\refs\heads\master\source\Octopus.Tentacle\Integration\Iis\WebServerSevenSupport.cs:line 73
at Octopus.Tentacle.Integration.Iis.WebServerSevenSupport.FindVirtualDirectory(String webSiteName, String virtualDirectoryPath, Action`1 found) in y:\work\refs\heads\master\source\Octopus.Tentacle\Integration\Iis\WebServerSevenSupport.cs:line 94
at Octopus.Tentacle.Integration.Iis.WebServerSevenSupport.ChangeHomeDirectory(String webSiteName, String virtualDirectoryPath, String newWebRootPath) in y:\work\refs\heads\master\source\Octopus.Tentacle\Integration\Iis\WebServerSevenSupport.cs:line 76
at Octopus.Tentacle.Procedures.Implementations.Iis.IisHomeDirectoryUpdateProcedure.Start(IProcedureHost host, ProcedureState state) in y:\work\refs\heads\master\source\Octopus.Tentacle\Procedures\Implementations\Iis\IisHomeDirectoryUpdateProcedure.cs:line 36
at Octopus.Tentacle.Orchestration.Procedures.ProcedureCallOrchestrator.Receive(CallProcedureCommand message) in y:\work\refs\heads\master\source\Octopus.Tentacle\Orchestration\Procedures\ProcedureCallOrchestrator.cs:line 73
at Pipefish.Actor.OnReceivingTyped[TBody](Message message) in y:\work\3cbe05672d69a231\source\Pipefish\Actor.cs:line 113
Tentacle version 2.5.10.567

My Octopus Deploy server is on v2.5.10.567

Any guidance on what I should look at next would be great. :slight_smile:

I’ve managed to narrow it down and I don’t think this is an issue. I’ll investigate this further in a couple of weeks, but I found that it was a problem with the state of the IIS virtual directories after I “dirtied” the server with some incorrectly configured deployments.

Deleting the IIS web apps and recreating them fixed this problem.

Hi Ryan,

Thanks for the follow up. Let us know if you have any further issues.

Vanessa