Gravatar for nbo@oxygen.dk

Question by nbo, Jul 21, 2015 7:42 AM

Cannot find ProviderIndex constructor

Hi everyone,

I've got a sitecore website, where I have setup Coveo Enterprise Search 7 + Coveo for Sitecore, whenever I try to launch the site, I get the following error:

alt text

When accessing http://localhost:8080/rest/search everything works as intended. I can likewise make a query there, by inputting ?q=querytexthere after the previous URI. That leads me to believe that Coveo is configured correctly.

Below is the Rest.Config file:


<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <pipelines>
      <!-- Pipeline used to customize the JSON response of the search REST endpoint. -->
      <coveoProcessRestJsonResponse>
        <processor type="Coveo.SearchProvider.Rest.Processors.CoveoProcessRestJsonResponse.ParseJsonRestSearchResponseProcessor, Coveo.SearchProvider.Rest" />
      </coveoProcessRestJsonResponse>
      <!-- Pipeline used to customize the information returned by the REST endpoint. -->
      <coveoProcessParsedRestResponse>
      </coveoProcessParsedRestResponse>
      <httpRequestBegin>
        <!-- This processor is required to ensure that requests targeting the REST endpoint are not handled by Sitecore. -->
        <processor patch:before="processor[@type = 'Sitecore.Pipelines.HttpRequest.ItemResolver, Sitecore.Kernel']" type="Coveo.SearchProvider.Rest.Processors.HttpRequestBegin.TransferCoveoRestSearchRequest, Coveo.SearchProvider.Rest" />
      </httpRequestBegin>
    </pipelines>
    <contentSearch>
      <configuration>
        <!-- Coveo Rest endpoint search settings -->
        <restEndpointConfiguration type="Coveo.Framework.Configuration.RestEndpointConfiguration, Coveo.Framework">
          <!-- The secret key must be configured in the search api service as well. This way, the search api service can trust the application. -->
          <ApplicationSecret>My_Application_Secret</ApplicationSecret>
          <!-- The timeout period for requests going through the search api proxy.-->
          <RequestTimeout>00:00:30</RequestTimeout>
          <!-- Defines the location of the REST endpoint in the website. -->
          <RestEndpointPath>/coveo/rest</RestEndpointPath>
          <!-- The period while the search token is valid. -->
          <SearchTokenExpiration>01:00:00</SearchTokenExpiration>
          <!-- The URI to connect to the search api service. -->
          <SearchApiUri>http://localhost:8080/</SearchApiUri>
        </restEndpointConfiguration>
      </configuration>
    </contentSearch>
  </sitecore>
</configuration>

Does anyone have a clue as to what might be the reason for this very problem? If you need anymore, let me know and I'll put it up ASAP.

Best regards, Nicolai

2 Replies
Gravatar for slangevin@coveo.com

Answer by Simon, Jul 21, 2015 7:53 AM

Strange, is it possible that the Coveo.SearchProvider.config (not the REST one) is not enabled?
What is the version of your Sitecore?
Also, when you say that the site fails, you mean the entire Sitecore instance, including the management shell? Or simply the search interface?
Are you able to load the Diagnostic Page?

Gravatar for nbo@oxygen.dk

Comment by nbo, Jul 21, 2015 8:28 AM

The Coveo.SearchProvider.config is enabled, so that is not the problem. But I can't say with certainty, that the config itself is correct. I should have been more clear, it is the search site which fails, I am still able to load Management shell. I am also able to load the Diagnostic Page, I get an the following: "Remote Server returned an error: (500) Internal server error", rest is OK.

Gravatar for slangevin@coveo.com

Comment by Simon, Jul 21, 2015 8:32 AM

Thank you for the details. The error 500 that you are seeing on the diagnostic page, it is assigned to which field? Rest Endpoint? Admin Service? Security Provider?
My guess is the REST endpoint but if you could confirm, that would help. Finally, you can access: http://localhost:8080/rest/search, but how about [your sitecore instance]/coveo/rest ?

Gravatar for nbo@oxygen.dk

Comment by nbo, Jul 21, 2015 9:24 AM

Indeed it is the REST endpoint. I can access http://localhost:8080/rest/search, but not the [my sitecore instance]/coveo/rest. The latter throws same exception as stated in the original question. Look at the image :)

Gravatar for slangevin@coveo.com

Comment by Simon, Jul 21, 2015 10:13 AM

Ok, what is the version of:

  • Coveo
  • Coveo for Sitecore
  • Sitecore ?
Gravatar for nbo@oxygen.dk

Comment by nbo, Jul 22, 2015 1:02 AM

Coveo Enterprise Search 7.0 x64 (7402) Coveo Search API 8.0.301 Coveo For Sitecore 72 3.0 (891) Sitecore Version 7.2 Need anything else? :)

Gravatar for slangevin@coveo.com

Comment by Simon, Jul 22, 2015 8:15 AM

The Coveo for Sitecore version is trailing behind a bit. This is the version for February: http://download.coveo.com/download/Sitecore/3.0.955/x64/Coveo%20for%20Sitecore%2072%203.0%20(955).zip

Now apart from that, everything seems in order. I do not see how I can troubleshoot further on this thread. I would advise to contact support so that they can take a look at it live.

Gravatar for jflheureux@coveo.com

Answer by Jean-François L'Heureux, Aug 4, 2015 3:54 PM

The Coveo.SearchProvider.ProviderIndex class has a constructor with one string argument named "pName" for the index name. It means that the "pName" parameter must be declared in each index XML element like this in the Coveo.SearchProvider.config file:

<index id="sitecore_master_index" type="Coveo.SearchProvider.ProviderIndex, Coveo.SearchProvider">
  <param desc="p_Name">$(id)</param>
  ...
</index>

Can you verify your Coveo indexes have this parameter in your configuration files?

Ask a question