情况:
我创建了一个在我的 Intranet Web 服务器上运行的 Web 服务。该服务有一个调用 Microsoft SparePoint 的 lists.asmx Web 服务的操作。该服务还具有测试操作。当我在本地(visual studio)调用这些服务时,一切都很好。
问题:
当我将此 Web 服务部署到 Web 服务器上的 IIS 时,调用 lists.asmx 的操作失败并出现 401 错误。这发生在我登录到 Web 服务器时从 IE 运行服务或远程运行服务时(我已将自定义错误设置为关闭,因此我可以看到 401 错误)
期望的结果:
我的 Web 服务应该获取当前用户的凭据并将它们传递给 lists.asmx Web 服务。
当前代码: 在 Web 服务中设置凭据:
sharepointService.Lists listService = new sharePointService.Lists();
listService.Credentials = System.Net.CredentialCache.DefaultCredentials;
在 web.config 中设置 Web 引用:
<applicationSettings>
<MyServices.Properties.Settings>
<setting name="sharepointService_Lists" serializeAs="String">
<value>http://sharepoint.myDomain.com/_vti_bin/lists.asmx</value>
</setting>
</MyServices.Properties.Settings>
</applicationSettings>
其他信息:
测试操作在 IIS Web 服务器上部署时有效,并返回以下两个字符串:
HttpContext.Current.Request.LogonUserIdentity.Name
=NT AUTHORITY\IUSR
System.Security.Principal.WindowsIdentity.GetCurrent().Name
=IIS APPPOOL\ASP.NET v4.0
因此,如果这提供了任何有用的信息,那么 Web 服务似乎正在使用 IIS 应用程序池的用户名。
解决方案:
想法?谢谢!