0

情况:

我创建了一个在我的 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 应用程序池的用户名。

解决方案:

想法?谢谢!

4

1 回答 1

0

您需要在部分的 web.config 文件中设置身份验证模式 =“Windows”。

于 2013-08-01T14:55:35.227 回答