Unhandled Exception After Installing Coveo for Sitecore on Sitecore 8.0 or 8.1 Instance

Sitecore 8.0.0 - 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 (i.e., 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.

Recommended Articles