This is an interesting one seen with a customer where when we try crawl a SharePoint web -application we get the error , as the Error message & resolution steps are
The protocol handler cannot be found. Check that the handler has been installed. (0x80040d1a)
# We enabled VerboseEX logging and collected the logs when kicking a full crawl which shows below error:
08/18/2015 11:52:38.02 mssearch.exe (0x131C) 0x18D0 SharePoint Server Search Crawler:Gatherer Plugin cd11 Warning The start address http://intranet.contoso.com:3313 cannot be crawled. Context: Application 'Search_Service_Application', Catalog 'Portal_Content' Details: The protocol handler cannot be found. Check that the handler has been installed. (0x80040d1a)
From the event logs we saw below error as well:
Failed to load protocol handler OSearch15.STS3Handler.1. Error description: The parameter is incorrect
Confirmed that OSearch15.STS3Handler.1. is present in below registry keys and have correct full control permission:
# mssph.dll is the srch dll responsible for protocols
We can register the .dll again by removing the protocol folder from registry and check if it comes back up once we register the DLL again .
In my environment:
I will be exporting the key and deleting the same. Once that is done will register the dll using
regsvr32 "C:\Program Files\Microsoft Office Servers\15.0\Bin\mssph.dll" and check if protocols come back. If they do, then we can try this as an action plan
Here is how we fixed it
# After a lot of troubleshooting , we finally found the issue to be a Bad Proxy configuration for the crawl account . Where the separate URL's did not have the semicolon ; between different url's .
# This can be seen in IE or via a Netsh.command
Netsh Winhhtp Show proxy
# Once we fixed the Proxy configuration the error went away . So basically the error in the Event viewer & the ULS is bit misleading , but the cause is a Bad Proxy configuration due to which Winhttp returns an invalid argument exception .
Note : You can clear the Proxy configuration to confirm the behavior temporarily , Also need to keep in mind that if this is configured via a Group policy , the configuration will be applied back at next refresh
1. From IE settings
2. Netsh Winhhtp Reset Proxy