1

我在 Windows 2003 服务器上安装了 Microsoft Search Server 2008 Express,并创建了一个搜索内容源(我们的公司网站)进行测试。我可以从搜索中心很好地搜索这个来源。

从 ASP.NET Web 应用程序中,我尝试查询所提供的 Web 服务,如此处所述

我在 web.config 中使用模拟设置来指定运行请求的用户帐户,但我不知道如何在搜索服务器中设置该用户以允许其进行查询。

<authentication mode="Windows"/>
<identity impersonate="true" userName="MyDomain\MyUser" password="myPassword" />

如果我使用自己的网络凭据,则会返回结果,因为我在 Search Server 实例中设置了完全控制权限,但是当我为此使用备用域帐户 (MyDomain\QueryUser) 时,我收到此错误:

System.Web.Services.Protocols.SoapException:服务器无法处理请求。---> 试图执行未经授权的操作。

我已在 Search Server > Site Settings > Permissions > Add Users 中将用户添加到服务器,并为帐户提供了完全控制权,但它仍然无法使用 web 服务。我想念的地方有设置吗?

**编辑

好的,我已经尝试了 Gordon 的建议,并使用 Sharepoint 应用程序使用的凭据使错误消失。此外,将第二个域用户添加到服务器上的本地管理员组会使错误消失。

这些更改授予 Web 服务的权限是什么?我是否必须求助于使用这些变通办法,或者我可以在某处的 Sharepoint 中为我的域用户授予适当的权限?

4

1 回答 1

1

访问MOSS的Search webservice的关键是

1) 正确验证 2) 强制 MOSS Web 服务使用该身份

对于第一部分,检查是否为您的网络凭据正确分配了所有属性,我通常提供这些:

NetworkCredential credentials = new NetworkCredential(userName, password, domain);
service.PreAuthenticate = true;
service.Url = your_ws_fullurl;
service.UseDefaultCredentials = false;
service.useDefaultCredentialsSetExplicitly = true;
service.Credentials = credentials;

对于第二部分,一个解决方案是删除 IUSR(IIS 匿名用户)使用 IIS 访问 /_vti_bin/Search.asmx 文件的权限(进入 /_vti_bin/ 文件夹,右键单击文件安全属性),这样 MOSS将检索凭据缓存中提供的凭据,并且您不会收到“未经授权的操作”消息

于 2009-10-07T13:17:03.823 回答