我有一个经典 ASP 站点的 VB6 后端。然后,该 VB 使用 MSXML2 调用同一服务器上的 Web 服务。这适用于我们所有的服务器,但只有一个。如果我将 Web 服务站点设置为接受匿名登录,它将起作用,但是如果我强制仅集成安全 MSXML 返回访问被拒绝错误。
我假设凭据没有从该服务器上的 VB 后端传递到 Web 服务。这可能发生的一些原因是什么?
编辑:这是我收到的错误消息。当我从服务器或另一台计算机访问网站时,我会得到它。如果我直接进入网络服务,一切正常。
2009-07-16 13:56:47 W3SVC1 <IP Address> POST /reportprint/reportprint.asmx - 80 - <IP ADDRESS> Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729) 401 2 2148074254
更新:尝试将网站设置为 NTLM 身份验证(而不是默认的 NTLM 和 Kerberos)。
将“WebSite”更改为网站的编号(可以在 mmc 中看到)。详细信息在“如何配置 IIS 以同时支持 Kerberos 协议和 NTLM 协议进行网络身份验证”中
401.2 错误是“被服务器配置拒绝”。你可以在这里和这里阅读。
更新前:您确定没有从 asp 站点传递凭据吗?尝试将此站点设置为匿名登录。并将应用程序池配置为在高权限帐户上运行(只是临时的!),看看是否能解决问题。
另外,您可以粘贴iis日志中的行吗?尤其是错误代码(401 和接下来的两个数字)。
使用旧版应用程序传递凭据存在很多问题。我的猜测是 VB6 的东西正在使用 NTLM,而服务器不会接受它。
您可能会在 Stack Overflow 上获得更多帮助。