We upgraded to a 1.6 release about a month ago and about a week in we
started seeing this error in the e-mail publishers. The
ccservice.exe.config may have changed between upgrade and when the
failure started happening but I can't tell for sure.
We have version 1.6.7922.1
I was thinking of getting the latest version but it's kind of a pain
in the butt to upgrade so I'd like to know if we're just doing
something wrong first or if there is a bug.
Here is what I believe to be the relevant snip of our
ccservice.exe.config file:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="xslFiles"
type="ThoughtWorks.CruiseControl.Core.Config.XslFilesSectionHandler,ThoughtWorks.CruiseControl.Core"/
>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
<section name="cruiseServer"
type="ThoughtWorks.CruiseControl.Core.Config.ServerConfigurationHandler,ThoughtWorks.CruiseControl.Core"/
>
</configSections>
<!-- Specifies the stylesheets that are used to transform the build
results when using the EmailPublisher -->
<xslFiles>
<xslFile>xsl\header.xsl</xslFile>
<xslFile>xsl\modifications.xsl</xslFile>
<xslFile>xsl\unittests.xsl</xslFile>
<xslFile>xsl\compile.xsl</xslFile>
<xslFile>xsl\compile-msbuild.xsl</xslFile>
</xslFiles>
...snip.
Full stack trace:
Unable to build email message:
System.Configuration.ConfigurationErrorsException: An error occurred
creating the configuration section handler for xslFiles: Object
reference not set to an instance of an object. (C:\Program Files
\CruiseControl.NET\server\ccservice.exe.Config line 10) --->
System.NullReferenceException: Object reference not set to an instance
of an object. at
ThoughtWorks.CruiseControl.Core.Config.XslFilesSectionHandler.Create(Object
parent, Object configContext, XmlNode section) at
System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.CreateSectionImpl(RuntimeConfigurationRecord
configRecord, FactoryRecord factoryRecord, SectionRecord
sectionRecord, Object parentConfig, ConfigXmlReader reader) at
System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.CreateSectionWithRestrictedPermissions(RuntimeConfigurationRecord
configRecord, FactoryRecord factoryRecord, SectionRecord
sectionRecord, Object parentConfig, ConfigXmlReader reader) at
System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.CreateSection(Boolean
inputIsTrusted, RuntimeConfigurationRecord configRecord, FactoryRecord
factoryRecord, SectionRecord sectionRecord, Object parentConfig,
ConfigXmlReader reader) at
System.Configuration.RuntimeConfigurationRecord.CreateSection(Boolean
inputIsTrusted, FactoryRecord factoryRecord, SectionRecord
sectionRecord, Object parentConfig, ConfigXmlReader reader) at
System.Configuration.BaseConfigurationRecord.CallCreateSection(Boolean
inputIsTrusted, FactoryRecord factoryRecord, SectionRecord
sectionRecord, Object parentConfig, ConfigXmlReader reader, String
filename, Int32 line) --- End of inner exception stack trace --- at
System.Configuration.BaseConfigurationRecord.EvaluateOne(String[]
keys, SectionInput input, Boolean isTrusted, FactoryRecord
factoryRecord, SectionRecord sectionRecord, Object parentResult) at
System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord
factoryRecord, SectionRecord sectionRecord, Object parentResult,
Boolean getLkg, Boolean getRuntimeObject, Object& result, Object&
resultRuntimeObject) at
System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String
configKey, Boolean getLkg, Boolean checkPermission, Boolean
getRuntimeObject, Boolean requestIsHere, Object& result, Object&
resultRuntimeObject) at
System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String
configKey, Boolean getLkg, Boolean checkPermission, Boolean
getRuntimeObject, Boolean requestIsHere, Object& result, Object&
resultRuntimeObject) at
System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String
configKey, Boolean getLkg, Boolean checkPermission, Boolean
getRuntimeObject, Boolean requestIsHere, Object& result, Object&
resultRuntimeObject) at
System.Configuration.BaseConfigurationRecord.GetSection(String
configKey, Boolean getLkg, Boolean checkPermission) at
System.Configuration.BaseConfigurationRecord.GetSection(String
configKey) at
System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String
sectionName) at
System.Configuration.ConfigurationManager.GetSection(String
sectionName) at
ThoughtWorks.CruiseControl.Core.Publishers.BuildLogTransformer.TransformResultsWithAllStyleSheets(XPathDocument
document) at
ThoughtWorks.CruiseControl.Core.Publishers.HtmlDetailsMessageBuilder.AppendHtmlMessageDetails(StringBuilder
message, IIntegrationResult result) at
ThoughtWorks.CruiseControl.Core.Publishers.HtmlDetailsMessageBuilder.BuildMessage(IIntegrationResult
result) at
ThoughtWorks.CruiseControl.Core.Publishers.EmailPublisher.CreateMessage(IIntegrationResult
result)