通过Web服务进行的SharePoint 2010搜索提供“尝试执行未经授权的操作”

问题描述

|| 我们已经设置了Sharepoint搜索(虽然不是企业版)来索引一些标准的asp.net网站,如果我转到sharepoint中的搜索页面搜索任何特定内容,就会得到想要的结果。 但是,我现在尝试从标准网站(不在共享点中)使用搜索Web服务,并收到“尝试执行未经授权的操作”错误。我知道我正在正确地进行身份验证,因为提琴手向我显示了401,然后显示了200,表示我可以。但是,当我调用.Query时(代码示例的最后一行),它给了我错误。 这是我的代码
searchcentre2.QueryService queryService = new searchcentre2.QueryService();
System.Net.NetworkCredential _credentials = new System.Net.NetworkCredential(_username,_password,_domain);
queryService.Credentials = _credentials;
queryService.UseDefaultCredentials = false;
queryService.PreAuthenticate = true;
queryService.Url = _url;
m_lSearchResutls.Text = queryService.Query(queryxml.ToString());
我已经尝试过并且目前正在运行以下所有三个程序。 在本地站点和共享点搜索部分的所有地方都关闭匿名功能。 用我自己的凭据设置,并且我属于网站所有者和网站集管理员组 使我的计算机名称可以访问网站集管理员组(根据我的系统管理员的建议,因为两个网站应用程序池都在网络服务帐户下运行) 我还有什么需要设置或修复或查看的吗?我没办法尝试。我仍然必须在共享点方面进行设置吗? 我已经尝试了search.asmx / spsearch.asmx和.Query / .QueryEx,并且上面的错误消息没有区别。 那里有一些代码示例,您可以在其中使用基本身份验证,方法是将其添加到我尝试过的标头中,但这也不起作用。我什至尝试过NTLM,但是如果是我的安全问题,我肯定不会收到401,然后200的响应? 因此,现在我开始认为必须更改Sharepoint方面的内容。但是呢 任何帮助,将不胜感激。     

解决方法

看来我已经解决了问题。感谢Microsoft的Michael O''Donovan的建议。 我目前正在使用RSS提要进行搜索,这使我的描述字段返回。看起来它也接受我的凭据(尽管我需要测试搜索结果以确保获得正确的条目)。 Search RSS feed的URL及其查询字符串参数如下:http://searchsite/_layouts/srchrss.aspx?k = keyword&s = scope&u =&start = 1 我们不在共享点环境中运行Kerberos,这是导致search.asmx和spsearch.asmx页面的身份验证问题的原因。身份验证发生了两跳,而Kerberos可以解决该问题。 希望这可以帮助我摆脱困境。