通过webservice进行的Sharepoint 2010搜索提供“尝试执行未经授权的操作”

时间:2011-05-23 14:39:10

标签: web-services sharepoint search

我们设置了Sharepoint搜索(不是企业)来索引我们的一些标准asp.net网站,如果我去sharepoint的搜索页面搜索任何具体的东西,我得到的结果是我正在寻找的。

但是,我现在尝试从标准网站(而不是在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());

我已尝试并且目前正在运行以下所有这三项内容。

  1. 在我的本地站点和sharepoint搜索部分的任何地方关闭匿名。
  2. 使用我自己的凭据设置凭据,我位于网站所有者和网站集管理员组
  3. 授予我的计算机名称访问网站集管理员组的权限(根据我的系统管理员的建议,因为两个网站应用程序池都在网络服务帐户下运行)
  4. 我还需要设置或修复或查看其他内容吗?我想要尝试的东西已经不多了。这是我必须设置的共享点吗?

    我已经尝试过search.asmx / spsearch.asmx和.Query / .QueryEx,上面的错误信息没有区别。

    那里有代码示例,您可以使用基本身份验证将其添加到我尝试过的标题中,但这也不起作用。我甚至尝试过NTLM,但是如果这是我的安全性,我肯定不会有401然后200响应吗?

    所以现在我开始认为在Sharepoint方面我必须改变它。但是什么?

    任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

看起来我修复了我的问题。感谢Microsoft的Michael O'Donovan提供的建议和建议。

我目前正在使用RSS提要进行搜索,这会将我的描述字段返回给我。看起来它也接受我的凭据(虽然我需要测试搜索结果以确保我得到正确的条目)。搜索RSS提要及其查询字符串参数的网址如下:http://searchsite/_layouts/srchrss.aspx?k=keyword&s=scope&u=&start=1

我们没有在sharepoint环境中运行Kerberos,这是我们对search.asmx和spsearch.asmx页面进行身份验证问题的原因。认证在某处发生了双跳,而且kerberos会解决这个问题。

希望这有助于解决与我同样困境的其他人。