November Happy Hour will be moved to Thursday December 5th.

EpiServer Search on multibinding site not working

Vote:
 

Hi,

We currently have a site that has 3 different bindings, but uses the same episerver instance and a separate site for searching.

However, when trying to run the tool at CMS/Admin/IndexContent.aspx, nothing is happening and I am getting an error in the log such as this:

2015-06-04 10:33:43,327 [16] ERROR SearchSettings: Could not reset index '' for service uri 'http://localhost:33012/IndexingService/IndexingService.svc/reset/?namedindex=&accesskey=*****************************'. Message: The remote server returned an error: (500) Internal Server Error. at System.Net.HttpWebRequest.GetResponse()
at EPiServer.Search.RequestHandler.MakeHttpRequest(String url, NamedIndexingServiceElement namedIndexingServiceElement, String method, Stream postData, Action`1 responseHandler)
at EPiServer.Search.RequestHandler.ResetIndex(String namedIndexingService, String namedIndex)

I am pointing my search, in web.config, to point to the port that the search is running off, in IIS Express, and can see that is alive by going to IndexingService/IndexingService.svc. However, when firing off the search I can see it's not hitting that code at all, as my breakpoints aren't being reached.

I have  enabled.

Is there anything else I'm potentially missing? 

#122529
Jun 04, 2015 11:43
Vote:
 

I have the exact same problem. Did you solve it? 

#122946
Jun 18, 2015 14:25
Vote:
 

We haven't unfotunately, yet, no.

#122965
Jun 19, 2015 9:59
Vote:
 

Do you get any error message when you try to open that url directly in the browser?

#122971
Jun 19, 2015 20:15
Vote:
 

We started having similar problem when we moved to 7.18 back in January. Prior to this I already had multipleSiteBindingsEnabled="true" in the config and it was working fine with 7.13.3. Now the internal search in the CMS doesnt work at all.

Ignore the replaced-on-purpose I removed the host name. Also checked that the indexing service was availble on the hostname defined in the config.

I used a 3rd party tool to check and search the lucene index to ensure it wasnt corrupted.

Still a mystery to us, perhaps its fixed in a newer build than 7.18 ?

2015-06-24 00:00:12,075 [12] ERROR SearchSettings: Update batch could not be sent to service uri 'http://replaced-on-purpose/IndexingService/IndexingService.svc/update/?accesskey=local'. Message: 'The remote server returned an error: (400) Bad Request. at System.Net.HttpWebRequest.GetResponse()
at EPiServer.Search.RequestHandler.MakeHttpRequest(String url, NamedIndexingServiceElement namedIndexingServiceElement, String method, Stream postData, Action`1 responseHandler)
at EPiServer.Search.RequestHandler.SendRequest(SyndicationFeed feed, String namedIndexingService, Collection`1 ids)'
2015-06-24 00:00:12,077 [12] ERROR SearchSettings: Send batch for named index 'serviceName' failed. Items are left in queue.
2015-06-24 00:00:42,279 [7] ERROR SearchSettings: Update batch could not be sent to service uri 'http://replaced-on-purpose/IndexingService/IndexingService.svc/update/?accesskey=local'. Message: 'The remote server returned an error: (400) Bad Request. at System.Net.HttpWebRequest.GetResponse()
at EPiServer.Search.RequestHandler.MakeHttpRequest(String url, NamedIndexingServiceElement namedIndexingServiceElement, String method, Stream postData, Action`1 responseHandler)
at EPiServer.Search.RequestHandler.SendRequest(SyndicationFeed feed, String namedIndexingService, Collection`1 ids)'
2015-06-24 00:00:42,280 [7] ERROR SearchSettings: Send batch for named index 'serviceName' failed. Items are left in queue.
2015-06-24 00:01:12,510 [16] ERROR SearchSettings: Update batch could not be sent to service uri 'http://replaced-on-purpose/IndexingService/IndexingService.svc/update/?accesskey=local'. Message: 'The remote server returned an error: (400) Bad Request. at System.Net.HttpWebRequest.GetResponse()
at EPiServer.Search.RequestHandler.MakeHttpRequest(String url, NamedIndexingServiceElement namedIndexingServiceElement, String method, Stream postData, Action`1 responseHandler)
at EPiServer.Search.RequestHandler.SendRequest(SyndicationFeed feed, String namedIndexingService, Collection`1 ids)'
2015-06-24 00:01:12,510 [16] ERROR SearchSettings: Send batch for named index 'serviceName' failed. Items are left in queue.
2015-06-24 00:01:42,721 [12] ERROR SearchSettings: Update batch could not be sent to service uri 'http://replaced-on-purpose/IndexingService/IndexingService.svc/update/?accesskey=local'. Message: 'The remote server returned an error: (400) Bad Request. at System.Net.HttpWebRequest.GetResponse()
at EPiServer.Search.RequestHandler.MakeHttpRequest(String url, NamedIndexingServiceElement namedIndexingServiceElement, String method, Stream postData, Action`1 responseHandler)
at EPiServer.Search.RequestHandler.SendRequest(SyndicationFeed feed, String namedIndexingService, Collection`1 ids)'
2015-06-24 00:01:42,722 [12] ERROR SearchSettings: Send batch for named index 'serviceName' failed. Items are left in queue.
2015-06-24 00:02:12,940 [16] ERROR SearchSettings: Update batch could not be sent to service uri 'http://replaced-on-purpose/IndexingService/IndexingService.svc/update/?accesskey=local'. Message: 'The remote server returned an error: (400) Bad Request. at System.Net.HttpWebRequest.GetResponse()
at EPiServer.Search.RequestHandler.MakeHttpRequest(String url, NamedIndexingServiceElement namedIndexingServiceElement, String method, Stream postData, Action`1 responseHandler)
at EPiServer.Search.RequestHandler.SendRequest(SyndicationFeed feed, String namedIndexingService, Collection`1 ids)'

#123065
Edited, Jun 24, 2015 11:05
Vote:
 

By the looks of it custom errors and http errors being enabled in web.config is getting in the way in my case on our content authoring server. I added passthrough option to  to indexingservice.svc element and I can now get to /IndexingService/IndexingService.svc which shows "endpoint not found" as I would expect

  <location path="IndexingService/IndexingService.svc">
    <system.web>
      <httpRuntime maxQueryStringLength="65536" />
    </system.web>
    <system.webServer>
      <security>
        <requestFiltering>
          <requestLimits maxQueryString="65536" />
        </requestFiltering>
      </security>
	  <httpErrors existingResponse="PassThrough" />
    </system.webServer>
  </location>

Although I'm still seeing these in the logs.

2015-06-26 17:30:34,564 [12] ERROR SearchSettings: Update batch could not be sent to service uri 'http://my-server-here-/IndexingService/IndexingService.svc/update/?accesskey=local'. Message: 'The remote server returned an error: (400) Bad Request.   at System.Net.HttpWebRequest.GetResponse()   at EPiServer.Search.RequestHandler.MakeHttpRequest(String url, NamedIndexingServiceElement namedIndexingServiceElement, String method, Stream postData, Action`1 responseHandler)   at EPiServer.Search.RequestHandler.SendRequest(SyndicationFeed feed, String namedIndexingService, Collection`1 ids)'2015-06-26 17:30:34,565 [12] ERROR SearchSettings: Send batch for named index 'serviceName' failed. Items are left in queue.

Tried rebuilding the index using the hidden page on the CMS but still no luck.

#123209
Jun 26, 2015 19:03
Vote:
 

What about Event Logs if you enable "Failed Request Tracing" feature in IIS? I remeber that I struggled with the same case while ago, but didn't write down solution :(

#123215
Jun 28, 2015 8:34
Vote:
 

We're still no closer to a solution unfortunately (mainly due to other projects taking priority). Our sites are hosted on Azure and we're wondering if having each site hosted in a separate webapp is perhaps the cause of the issue (rather than having it all in one webapp and having Episerver handle the differerent url requests).

#123591
Jul 09, 2015 10:51
Vote:
 

Douglas did you find a solution for this problem in the end? I'm getting the same error in log files..

#133148
Aug 26, 2015 14:11
Vote:
 

Not yet no, its been deemed zero priority to fix at the moment so havent progressed it. I think using failed request tracing would be the way to debug further.

#133149
Aug 26, 2015 14:15
Vote:
 

In every solution I have had problem now I have solved it by creating a new empty site that only are used to hold the index and then publish that to only one of the webservers.

This is how you have to do it when you start to use Microsoft Azure and it is a good way to isolate EPiServer search.

#133150
Aug 26, 2015 14:18
Vote:
 

What do you mean by "then publish that to only one of the webservers." Henrik? I have Alloy Demo site and search is working fine. Still it doesn't help me much since I haven't found any difference with how my project is set up. Do you mean I should move my project files into the empty site if the search would work there?

#133153
Aug 26, 2015 14:49
Vote:
 

I will do a blog post on it next week.

Set it up like this:

In your solution in visual studio add a new empty web project. Add EPiServer search nuget package to it and remove that nuget package from the regular website. Set it up with a unique name for the index and allow all addresses to access it (this is done in the new project), see example here http://world.episerver.com/documentation/Items/Developers-Guide/EPiServer-CMS/8/Search/Installing-and-deploying-Search-Service/.

Then in your regular website change so it will talk to the index on the new site with that unique name you have choose.

Then on your live servers make your that you are only creating the new site on one of the servers in your load balanced environment and add then add some web transformation to support that all servers (your regular site) are just talking to the site and server you deployed your search site on. This you can do by either putting it on a special port (might not be opened in the firewall) or adding host name to it and then add that info to the host-files one the servers.

a little hard to explain in text but I will do a post on it next week when I am near a computer again :-)

#133155
Aug 26, 2015 15:26
Vote:
 

Thank you Henrik for your detailed reply. I have done the following steps:

1- I have installed an empty web project and EpiServer Search on it via nuget. It is an entirely empty site, not EPiServer or anything else installed on it. (It was a bit unclear if I was supposed to install EPiServer or just Search)

2- I have created a new web site in IIS (domain name in hosts file) so I can access the newly installed indexing service from my main project, which is the whole point as I understand it. There must be though missing configurations/handlers 'cause when surfing to the URL of the new service (say http://www.emptysite.local/IndexingService/IndexingService.svc) then i get the following error:

HTTP Error 404.17 - Not Found

The requested content appears to be script and will not be served by the static file handler.

instead of the "Endpoint not found" message.  Am i missing any step here?

#133161
Aug 26, 2015 16:14
Vote:
 
#133277
Aug 31, 2015 22:30
Vote:
 

Really well written! Thanks for the detailed explanation.

#133354
Sep 02, 2015 13:30
This thread is locked and should be used for reference only. Please use the Episerver CMS 7 and earlier versions forum to open new discussions.
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.