现在的位置: 首页 > 综合 > 正文

HTTP 错误 401.0 – Unauthorized 的解决方案

2018年06月10日 ⁄ 综合 ⁄ 共 2006字 ⁄ 字号 评论关闭

我的项目突然间报这个错误....

HTTP 错误 401.0 - Unauthorized

您无权查看此目录或页面。

最可能的原因:

  • 通过身份验证的用户无权访问处理请求所需的资源。

可尝试的操作:

  • 查看失败请求跟踪日志以获取有关此错误的其他信息。有关详细信息,请单击此处

详细错误信息:

模块    ManagedPipelineHandler
通知    ExecuteRequestHandler
处理程序    System.Web.Mvc.MvcHandler
错误代码    0x00000000
请求的 URL    http://localhost:46648/JiMu/Index/Login?ReturnUrl=%2fJiMu%2fIndex%2fLogin%3freturnUrl%3d%252fJiMu%252fIndex%252fLogin&returnUrl=%2fJiMu%2fIndex%2fLogin
物理路径    F:\Project\积木管理系统V2.0\Web\JiMu\Index\Login
登录方法    匿名
登录用户    匿名
请求跟踪目录    C:\Users\YueYue\Documents\IISExpress\TraceLogFiles\WEB

更多信息:

这是 IIS 返回的一般拒绝访问错误。通常,有一个子状态代码与此错误相关联,它描述了服务器为何拒绝请求。请检查 IIS 日志文件以确定是否有子状态代码与此错误相关联。

查看更多信息 »

Microsoft 知识库文章:

  • 907273

网上百度了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系统上固有的用户名.

然后我又把windows身份验证 给关掉了.发现登录用户名是空的了.代码 return false; 

一开始的错误又出来了.

也就是说这个异常.跟AuthorizeCore  这个方法的返回结果有关系.

又百度了一下. AuthorizeCore  这个方法干啥用的.  (解释一下,代码是别人写的.网上开源的.)

这篇文章

http://www.tuicool.com/articles/yuUzeq

AuthorizeCore  这个方法直接 return false;  以后会跳转到 web.config 中

<authentication mode="Forms">
  <forms loginUrl="~/" timeout="2880" />
     </authentication>

loginurl指定的 的网址.

我的配置是 <forms loginUrl="~/JiMu/Index/Login"

于是我启动调试,看看有没有进入这个action

输入网址  /JiMu/Index/Login

结果是首先进入了AuthorizeCore  这个方法,然后return false 以后就直接报错了.都没有进入. /JiMu/Index/Login 这个方法.

我就想了,我是要登录的,既然要登录肯定不能进入 AuthorizeCore   这个验证方法.要跳过所有对 login这个登录路径的验证..否则死循环.用户无法登录..

到这里我突然间就想起来了.

我之前好像删过,  [AllowAnonymous] 这种标签..

回去一检查代码..TMD真想骂死自己...

手贱把[AllowAnonymous]这个属性删掉了...

        [HttpPost]
        [AllowAnonymous]
        public ActionResult Login(LoginModel item, string RedirectTo)
        {
           ///.....
        }

导致报401.0这个错误.... 转了一大圈,学了一大圈,最后问题竟然是自己手贱造成的...

 

如果这篇文章对你帮助,那么请施舍点包子钱吧.. 在下支付宝号:

抱歉!评论已关闭.