我有一个MVC应用程序通常可以正常工作,但在特定服务器上,它返回401.0"经过身份验证的用户无法访问处理请求所需的资源& #34;错误。
通常情况如下:
我已登录过滤器,我可以看到用户经过身份验证。所以,他们至少要做到这一点。但是,不是他们应该看到的页面,而是来自IIS的401.0 Unauthorized错误。
我尝试过的事情:
我为这个错误设置了一个跟踪规则,我有一个跟踪,但我不知道如何阅读它。我会在这里粘贴它,但它是一个非常长的XML文件。
错误来自模块ManagedPipelineHandler,通知ExecuteRequestHandler,处理程序System.Web.Mvc.MvcHandler,错误代码为0x00000000。
一个细节:此服务器配置为使用端口90而不是端口80.我不确定为什么会导致问题,但可能会这样?
另一个细节:有问题的应用程序作为应用程序在" main"下面的虚拟目录中运行。应用程序,配置为根网站。
一个新细节:此服务器是Windows Server 2008 R2,并且是从Windows Server 2003升级的。我相信升级过程中的某些内容可能会解决这个问题,因为通常没有人怀疑"这类问题的解决方案有所帮助。
答案 0 :(得分:1)
所以你找到了解决方案,但要求澄清它为何起作用。这可能是其中一种情况。
似乎您的网站/网络应用程序是通过已过期的特定用户凭据托管的。下次当你删除&通过新凭据或应用程序通过它来添加Windows身份验证。
我在使用特定用户Path Credentials托管的测试Web应用程序中遇到类似情况。每次用户密码更改/过期。 Web应用程序停止工作。
答案 1 :(得分:0)
这里的解决方案似乎是打开Windows身份验证并关闭所有其他形式的身份验证,这是违反直觉的。但是你去......这就是它的工作原理。
如果有人想发一个答案解释为什么这是我的答案,我会给他们奖励。
答案 2 :(得分:0)
Windows首先使用Kerberos进行身份验证。接下来,它尝试其他身份验证方法。您的要求是NTLM。关闭所有功能,但Windows身份验证将强制应用程序尝试成功的NTLM。