我的项目突然间报这个错误....
网上百度了N久都说是文件夹权限问题.我给整个盘都分配了Everyone 的权限,文件夹也分配额Everyone 的权限.
但是我看到报错内容提示登录用户是匿名用户, 又在组策略里面将 Everyone的权限应用在匿名用户身上. 也就是说,系统把匿名用户当作 Everyone的组员来看.
理论上文件系统已经不存在什么权限问题了.
可还是报下面的错误. 这个报错页面很专业,猛地一看好像是iis 系统错误爆出的..
网上也没有关于 401.0的说明全部都是
401.1
401.2
401.3
401.4
的说明,只有几篇是关于401.0的.结果还不对.
实在无奈的情况下发现一篇文章,里面.说把项目的属性里面(不是属性页) 的windows身份验证启用就好了.
打开方法 属性页是右键可以点击出来的. 属性窗口是直接选中项目以后. 属性窗口(右下)自动会显示的.
我也抱着死马当活马医的心态试了下.
奇迹出现了.vs2010调试器有反应了.报了一个异常.异常是从类:
public class UserAuthorizeAttribute : AuthorizeAttribute
里面的AuthorizeCore 方法.爆出来的.
这个方法是用来验证用户是否已登录的过滤器.
我调试跟踪了一下发现.
登录的用户名是 一个系统用户名. .
这个用户名是window系统上固有的用户名. (启用window身份验证,会采取window那套自动登录机制.. 这当然不是我们想要的.)
然后我又把windows身份验证 给关掉了.
发现登录用户名是空的了.代码 return false;
一开始的错误又出来了.
也就是说这个异常.跟AuthorizeCore 这个方法的返回结果有关系.
又百度了一下. AuthorizeCore 这个方法干啥用的. (解释一下,代码是别人写的.网上开源的.)
这篇文章
http://www.tuicool.com/articles/yuUzeq
AuthorizeCore 这个方法直接 return false; 以后会跳转到 web.config 中
loginurl指定的 的网址.
我的配置是 于是我启动调试,看看有没有进入这个action 输入网址 /JiMu/Index/Login 结果是首先进入了AuthorizeCore 这个方法,然后return false 以后就直接报错了. 都没有进入. /JiMu/Index/Login 这个方法. 我就想了,我是要进入登录页面的 ,既然要登录肯定不能进入 AuthorizeCore 这个验证方法. 要跳过所有对 login这个登录路径的验证.. 否则死循环.用户无法登录.. 到这里我突然间就想起来了. 我之前好像删过, [AllowAnonymous] 这种标签.. 回去一检查代码..TMD真想骂死自己... 手贱把[AllowAnonymous]这个属性删掉了... 这个属性去掉以后,就会自动运行到AuthorizeCore 函数里面 如果这篇文章对你帮助,那么请施舍点包子钱吧.. 在下支付宝号:[email protected] 这几天有人向我要我的配置.我贴一下. [HttpPost]
[AllowAnonymous]
public ActionResult Login(LoginModel item, string RedirectTo)
{
///.....
}
导致报401.0这个错误.... 转了一大圈,学了一大圈,最后问题竟然是自己手贱造成的...