情况:
我创建了一个在我的Intranet Web服务器上运行的Web服务。 该服务具有调用Microsoft SparePoint的lists.asmx Web服务的操作。 该服务还有一个测试操作。 当我在本地调用这些服务(visual studio)时,一切都很好。
问题:
当我在Web服务器上将此Web服务部署到IIS时,调用lists.asmx的操作将失败,并显示401错误。当我在登录Web服务器时从IE运行服务或者我正在远程运行服务(我将自定义错误设置为关闭,因此我可以看到401错误)时,会发生这种情况。
期望的结果:
我的网络服务应该获取当前用户的凭据并将其传递给lists.asmx网络服务。
当前代码: 在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应用程序池的用户名。
解决方案:
想法?谢谢!
答案 0 :(得分:0)
您需要在web.config文件的下一部分设置身份验证模式=“Windows”。