Asp.net mvc 401.0-未经授权-使用IIS 7的MVC应用程序
我有一个MVC应用程序,通常工作正常,但在一个特定的服务器上,它返回一个401.0“经过身份验证的用户无权访问处理请求所需的资源”错误 通常它是这样工作的:Asp.net mvc 401.0-未经授权-使用IIS 7的MVC应用程序,asp.net-mvc,iis-7.5,windows-server-2008-r2,windows-server-2003,Asp.net Mvc,Iis 7.5,Windows Server 2008 R2,Windows Server 2003,我有一个MVC应用程序,通常工作正常,但在一个特定的服务器上,它返回一个401.0“经过身份验证的用户无权访问处理请求所需的资源”错误 通常它是这样工作的: 用户登录到一个单独的应用程序,获取用户ID和令牌,单击指向此应用程序的链接。用户ID和令牌进入URL 用户使用匿名身份验证进入我的应用程序,然后在我们的LogonAuthorize过滤器中,我们从查询字符串中获取ID和令牌以对用户进行身份验证 我已经登录到过滤器中,我可以看到用户正在进行身份验证。所以,他们至少走了这么远。但是,IIS出现了
- 授予IUSR对目录的访问权限
- 运行mirate.exe(这是一个实体框架应用程序)
- 正在删除解决方案中的所有[授权]属性。。。我知道我们尽可能使它成为BaseController对象的Initialize()事件。我们似乎没有将其加入到特定的控制器操作中,例如继承BaseController的Home/Index。在BaseController.Initialize()之后,我看不到任何日志记录
- 授予网络服务对目录的访问权限
- 将应用程序池从Integrated切换到Classic(我得到的是一个空白屏幕,而不是401.0错误,这很奇怪。日志中的身份验证内容相同。)
- 在应用程序池中使用本地用户帐户而不是网络服务,允许该帐户访问目录
- 设置“匿名”要使用的不同帐户
- 重建和重新部署应用程序(多次)
- 不同的身份验证方案:打开Windows auth会得到401.1,关闭所有这些方案会得到401.2
- 确保Global.asax位于正确的位置
- aspnet_regiis-i
- 把我的头发都扯下来(适得其反)
一个新的详细信息:此服务器是Windows server 2008 R2,是从Windows server 2003升级而来的。我相信升级过程中的某些因素可能会导致这一问题,因为针对这类问题的“常见可疑”解决方案都没有帮助。这里的解决方案似乎是打开Windows auth并关闭其他形式的身份验证,这是违反直觉的。但你看。。。这就是成功的原因
如果有人想发布一个答案,解释为什么这是我的答案,我会给他们奖金。所以你找到了解决方案,但要求澄清为什么它有效。这可能是其中一种情况 您的网站/web应用程序似乎是通过过期的特定用户凭据托管的。下一次当您通过新凭据删除和添加windows身份验证或应用程序传递时,它会起作用 在使用特定用户路径凭据托管的一个测试web应用程序中,我遇到了类似的情况。每次更改/过期用户密码时。Web应用程序停止工作
Windows首先使用Kerberos进行身份验证。接下来,它尝试其他身份验证方法。你的要求是NTLM。关闭除Windows身份验证之外的所有身份验证将迫使应用程序尝试NTLM,但成功了。应用程序中是否存在任何cookie共享或单一登录?您如何检查可访问性?我的意思是,您是否检查了来自同一台机器或不同机器的托管应用程序?两台服务器上是否安装了相同版本的MVC和.net?请参阅我发布的答案