我们刚刚将一个 asp.net 项目部署到我们的测试服务器上,该项目在我们的开发服务器上运行良好。但是,一旦将其部署到我们的测试服务器,两个页面(超过 10 个)就会生成 401 错误。返回错误的页面的权限与正常运行的页面的权限相同。
- 运行它的服务器是Windows Server 2008。
- 我们使用的网络服务器是IIS7。
- 我们只允许匿名身份验证。
更新:虽然这两个页面始终返回 401 错误,但现在其他页面也会在短时间内偶尔出现这种情况。
造成这种情况的可能原因是什么?
答案1
我建议打开 IIS 日志中的状态、子状态和 win32status 日志记录,并在此处发布一行显示日志中的 401 错误。
答案2
我们能够复制该问题(作为背景介绍,该应用程序是一个类似 REST 的 API),我们发现,如果对页面的第一次请求是 PUT 调用,则页面将返回 401 错误并将继续返回该错误。但是,如果对页面的第一次调用是 GET 调用,则页面将加载正常,并且后续调用(GET 或 PUT)将成功约一小时,但问题会再次出现。
我们认为这是由于应用程序配置优先于 IIS7 配置所致。IIS7 配置为匿名身份验证,而应用程序未配置。一旦我们将应用程序配置为接受匿名身份验证,问题就消失了。