Unhandled Exception After Installing Coveo for Sitecore on Sitecore 8.0 or 8.1 Instance
Unhandled Exception After Installing Coveo for Sitecore on Sitecore 8.0 or 8.1 Instance
Sitecore 8.0.0 to 8.0.5, 8.1.0
Symptoms
After installing Coveo for Sitecore on a Sitecore 8.0 or 8.1 instance, Sitecore crashes with the following error message:
Unhandled exception error message:
Exception: Sitecore.Exceptions.ConfigurationException
Message: Could not create instance of type: Sitecore.ContentSearch.FieldReaders.FieldReaderMap. No matching constructor was found.
Source: Sitecore.Kernel
at Sitecore.Configuration.Factory.CreateFromTypeName(XmlNode configNode, String[] parameters, Boolean assert)
at Sitecore.Configuration.Factory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert, IFactoryHelper helper)
at Sitecore.Configuration.Factory.GetInnerObject(XmlNode paramNode, String[] parameters, Boolean assert)
at Sitecore.Configuration.Factory.AssignProperties(XmlNode configNode, String[] parameters, Object obj, Boolean assert, Boolean deferred, IFactoryHelper helper)
at Sitecore.Configuration.Factory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert, IFactoryHelper helper)
at Sitecore.Configuration.Factory.CreateObject[T](XmlNode configNode)
at Coveo.AbstractLayer.FieldManagement.FieldsHandlerUtilityFactory…ctor()
at Coveo.SearchProvider.Events.CachedFieldsEventHandler…ctor()
Cause
Coveo added a line to the Coveo.SearchProvider.config
file to improve the cache, so it wouldn’t create multiple instances of the same FieldReaderMap
cache each time the indexes were called:
<param desc="id">coveoFieldReaderMap</param>
However, this line leverages the id
param of the Sitecore <fieldReaders type="Sitecore.ContentSearch.FieldReaders.FieldReaderMap, Sitecore.ContentSearch">
element.
The id
param didn’t exist in early releases of Sitecore 8.0 and 8.1.
Coveo provides one package for all Sitecore 8.0 releases (that is, Sitecore 8.0 initial, Sitecore 8.0 update 1, etc.), and one for all Sitecore 8.1 releases.
The Coveo for Sitecore packages for Sitecore 8.0 and 8.1 versions contain a Coveo.SearchProvider.config
file which assumes Sitecore supports this id
param.
Resolution
Remove the <param desc="id">coveoFieldReaderMap</param>
line from the Coveo.SearchProvider.config
file.