我有一个webapp,它是一个运行在Server 2008上的IIS 7.5上的.NET 4,webforms应用程序。最近,显然偶尔尝试在Mac上使用该应用程序的用户会看到一个错误页面说明:
401 Unauthorized - 由于凭据无效,访问被拒绝。 您无权使用您提供的凭据查看此目录。
该页面未提供任何进一步的信息或子代码。我已经检查了IIS错误日志以获取更多信息,并且发现这个问题对于mac上的用户来说似乎是独一无二的,这通常是Safari,但它也发生在其他浏览器上,例如Firefox。同样,这些日志中没有提供子代码。
提供的错误消息似乎与401.1一致但是我使用的是表单身份验证而不是Windows身份验证。我自己无法重现这一点,目前它显然是随机发生的,并且在经过一系列具体步骤后并非始终如一。
当用户在应用程序中或尝试登录时会发生此错误,我不认为这与他们输入无效凭据有关,因为我已经验证处理该问题,并且它可能发生在已经登录到应用程序的用户身上。< / p>
由于我无法重现错误,我不知道如何解决这个问题,我希望得到一些指导,以及你们可以提出的任何解决方案或想法。如果需要更多信息,请通知我,我可以更新问题。
编辑:
我有一个想法,即mac上的某些配置可能导致在不需要时发送WWW-Authenticate标头,但是在使用TamerData添加标头后我发现我仍然无法复制该问题。除匿名和表单外,IIS中的所有身份验证都被禁用。
编辑2:
我现在能够成功地重现该问题,当未经身份验证的用户尝试使用?ReturnUrl = value参数访问受保护的页面时,会发生此问题。这将导致IIS显示上述错误页面。我可以通过删除任何未经身份验证的访问受保护页面的尝试的ReturnUrl参数并将用户重定向到Begin_Request中的登录页面来修复此行为。
但是,此问题最常见于一个页面,该页面在用户刚刚登录后立即重定向到 。因此,出于某种原因,用户在发送时仍然会收到401错误事实证明。知道为什么会这样吗?