Answered by:
SharePoint Server Search Error when crawling Project Site Deliverables List

Question
-
Hi,
I know this may be a SharePoint question, but since it affects a Project Site, I thought it made sense to ask here. Everytime SharePoint Server Search crawls (full or incremental), it generates one error. The ULS log entries are (I replaced the actual domain name):
10/26/2010 09:22:56.58 mssdmn.exe (0x1270) 0x0E70 SharePoint Server Search PHSts dv45 High CSTS3Accessor::Init: SharePointError found in URL http://<mydomain>/pwa1/Project1/Lists/Deliverables/AllItems.aspx header value 0, hr=8004FD0F [sts3acc.cxx:556] d:\office\source\search\native\gather\protocols\sts3\sts3acc.cxx
10/26/2010 09:22:56.58 mssdmn.exe (0x1270) 0x0E70 SharePoint Server Search PHSts dvb1 High CSTS3Accessor::Init fails, Url sts4://<mydomain>/siteurl=pwa1/siteid={ed1ca69a-cc85-457f-8440-8e5f9ee68fb7}/weburl=project1/webid={94da3e92-59cc-4e77-911d-930557f03c31}/listid={8bf758e0-9477-4de9-a872-90b7b9562f96}/viewid={9abff3a3-4556-47ca-b631-623f3277099a}, hr=8004FD0F [sts3handler.cxx:312] d:\office\source\search\native\gather\protocols\sts3\sts3handler.cxx
10/26/2010 09:22:56.58 mssdmn.exe (0x1270) 0x0E70 SharePoint Server Search PHSts dvb2 High CSTS3Handler::CreateAccessorExD: Return error to caller, hr=8004FD0F [sts3handler.cxx:330] d:\office\source\search\native\gather\protocols\sts3\sts3handler.cxxThe crawl appears to work, since the test Issue, Deliverable and Risk I created show up in search results. I have deleted and re-created the project site (I only have one, as this is a new install), but the error persists. The main error seems to be "header value 0", but I can't seem to find any info about what this is. There is also a strange reference to a file on the "d:" drive, which is the DVD drive that was used as the installation source, and has since been ejected. Any ideas?
Thanks,
Erik
Tuesday, October 26, 2010 5:01 PM
Answers
-
I have discovered the root cause of this error but there doesn't appear to be a fix for it. I get the following error in my logs at the same time as the failed crawl:
Microsoft.SharePoint.SPException: This view requires at least Microsoft Internet Explorer 7.0, Mozilla FireFox 3.0, or Apple Safari 3.0. at Microsoft.SharePoint.WebControls.Gantt.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.AddedControl(Control control, Int32 index) at Microsoft.SharePoint.WebPartPages.ListViewWebPart.CreateChildControls() at Microsoft.SharePoint.WebPartPages.WebPartMobileAdapter.CreateChildControls() at System.Web.UI.Control.EnsureChildControls() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRen... 5c8f0191-9dbf-417e-beb0-408ccbd9f95d
It appears it is related to the user-agent that the crawl service is using.
The user-agent according to the registry key UserAgent in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\14.0\Search\Global\Gathering Manager\ is passed as Mozilla/4.0 (compatible; MSIE 4.01; Windows NT; MS Search 6.0 Robot). Since the Gantt view appears to be doing a user-agent verification prior to rendering this will always fail.
For now I have disabled "Allow items from this list to appear in search results?" but this seems like a bug. If the view won't ever work with the crawl user-agent shouldn't there be a hotfix to just always exclude it from the search results by default?
- Marked as answer by Alexander.Burton Monday, May 23, 2011 12:45 PM
Tuesday, April 5, 2011 5:04 PM
All replies
-
Is it default project workspace or customized?
Create new web application and new PWA on that web application, then observe the behaviour.
Cheers. Happy troubleshooting !!! Sriram E - MSFT Enterprise Project Management- Proposed as answer by Christophe FiessingerMicrosoft employee Friday, October 29, 2010 4:38 PM
- Marked as answer by Christophe FiessingerMicrosoft employee Monday, November 1, 2010 5:14 PM
- Unmarked as answer by Jack Dahlgren MVP Friday, November 5, 2010 6:55 PM
Friday, October 29, 2010 7:39 AM -
Hi Sriram,
Thanks for the reply, sorry I was late replying back. This is default project site from the standard template, no customization. I can create a new web app and pwa site on that that app, but I would really like to know the root cause of the error. In a production environment, solving a problem by creating a new web app seems like a last resort. Any suggestions as to where I can go to get info on this kind of error? Any help is appreciated.
Cheers,
Erik
Erik RHSFriday, November 5, 2010 5:00 PM -
Been a long time since this post, but this is the only remotely close thread I could find on Google.
We have a similar problem with our servers, it seems to be related to the Gantt view on normal lists. Anything that has a Gantt view on our intranet (regular web apps, Team Site templates) causes an error on the search crawler, and an error similar as the one above appears in the ULS logs.
We had one site with a Gantt view on the default.aspx page, and of course by design the crawler doesn't go deeper after an error.. Took 2 days to figure out that we just had to delete the Gantt view webpart from the home page.
I will try to look deeper into this when I get time, but hopefully this additionnal information will save someone else some trouble.
- Louis
Thursday, March 24, 2011 7:40 PM -
I have discovered the root cause of this error but there doesn't appear to be a fix for it. I get the following error in my logs at the same time as the failed crawl:
Microsoft.SharePoint.SPException: This view requires at least Microsoft Internet Explorer 7.0, Mozilla FireFox 3.0, or Apple Safari 3.0. at Microsoft.SharePoint.WebControls.Gantt.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.AddedControl(Control control, Int32 index) at Microsoft.SharePoint.WebPartPages.ListViewWebPart.CreateChildControls() at Microsoft.SharePoint.WebPartPages.WebPartMobileAdapter.CreateChildControls() at System.Web.UI.Control.EnsureChildControls() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRen... 5c8f0191-9dbf-417e-beb0-408ccbd9f95d
It appears it is related to the user-agent that the crawl service is using.
The user-agent according to the registry key UserAgent in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\14.0\Search\Global\Gathering Manager\ is passed as Mozilla/4.0 (compatible; MSIE 4.01; Windows NT; MS Search 6.0 Robot). Since the Gantt view appears to be doing a user-agent verification prior to rendering this will always fail.
For now I have disabled "Allow items from this list to appear in search results?" but this seems like a bug. If the view won't ever work with the crawl user-agent shouldn't there be a hotfix to just always exclude it from the search results by default?
- Marked as answer by Alexander.Burton Monday, May 23, 2011 12:45 PM
Tuesday, April 5, 2011 5:04 PM -
Hello all,
After some digging, I found two possible workarounds to solve this issue
- Follow this blog article, that suggests to update the crawler user agent string to remove the error. I don't like this option because it will tells asp.net to render controls in uplevel mode
- Use a control adapter. Here are the steps to implement it :
Code of the adapter :
namespace YouNamespace.GanttSearchFix { [Guid("B9D71139-8AC2-4320-BC00-E7B375231D5C")] public class GanttSearchAdapterFix : ControlAdapter { private static string g_CrawlerUserAgent = GetCrawlerUserAgent(); private static string GetCrawlerUserAgent() { using (var regKEy = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Office Server\14.0\Search\Global\Gathering Manager")) { var userAgentValue = (string)regKEy.GetValue("UserAgent"); return userAgentValue; } } protected override void OnLoad(EventArgs e) { var context = HttpContext.Current; if (context != null) { if (string.Compare(context.Request.UserAgent, g_CrawlerUserAgent, true) != 0) { base.OnLoad(e); } } } } }
Create a .browser file :
<?xml version="1.0" encoding="utf-8"?> <browsers> <browser refID="Default"> <controlAdapters> <adapter controlType="Microsoft.SharePoint.WebControls.Gantt, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" adapterType="$SharePoint.Type.b9d71139-8ac2-4320-bc00-e7b375231d5c.AssemblyQualifiedName$" /> </controlAdapters> </browser> </browsers>
(note that I have to add "browser" extension in the SharePoint token files replaceable parameters).
Deploy this files under the APP_Browsers folder of your web app. Recycle the application pool.
This will remove the OnLoad methods of the control when the user agent string is the one defined by the crawler. The check of the browser level is done within this method.
Hope that helps, two years later :)
Paying back the community for its help by writing articles :
Have a Nice Day.Net Blog- Proposed as answer by Steve B_ Tuesday, October 30, 2012 3:48 PM
Tuesday, October 30, 2012 3:48 PM