ASP.Net表单身份验证401.2未经授权

时间:2017-02-24 19:52:19

标签: c# asp.net .net visual-studio

我有一个让我疯狂的问题。我在Visual Studio 2015中使用预定义的模板创建了一个ASP.Net项目。目标框架是4.5

当我添加Forms身份验证时,我得到的只是401.2消息。

这是我配置应用程序的方式: 我创建了一个Login.aspx页面。然后在web.config中我在system.web部分添加了以下属性:

 <authentication mode="Forms">
      <forms loginUrl="Login.aspx"
             protection="All"
             timeout="30"
             name=".ASPXAUTH"
             path="/"
             defaultUrl="Default.aspx" />
    </authentication>
    <authorization>
      <deny users="?"/>
      <allow users="*"/>
    </authorization>

我查了一些其他帖子,但到目前为止没有人帮助我:

这个不适用: Access is Denied - 401.2: Unauthorized Error

这个看起来很有前途,但我的应用没有雪茄: .NET Forms Authentication using IIS8.0 Express (vs2013) - 401.2.: Unauthorized: Logon failed due to server configuration

这个让我思考: https://stackoverflow.com/a/35925125/980201

当我检查IIS(Express)日志文件时,这就是我得到的:

2017-02-24 19:29:22 ::1 GET / .... - 302
2017-02-24 19:29:22 ::1 GET /Login ReturnUrl=%2f .... - 401

Login.aspx中的.aspx在哪里?

所以我删除了所有的FriendlyURL东西,但又没有运气了。在最后一次尝试中,我将配置更改为:

<forms loginUrl="LoginXXX.aspx"

这就是我得到的:

2017-02-24 19:45:37 ::1 GET / ... - 302
2017-02-24 19:45:37 ::1 GET /LoginXXX.aspx ReturnUrl=%2f 57745 - 404

为什么.Net重定向登录而不是login.aspx? 关于我的应用和配置文件的任何其他想法?

非常感谢!

关心罗兰

修改 一些意外的事件发生:当我使用Login.aspx.cs作为当前选项卡在VS中开始调试时,它会失败。当我从Default.aspx.cs开始调试时,它可以工作。将项目的开始操作设置为Default.aspx可解决此问题。但是,当站点运行时,将URL更改为login.aspx会使其再次失败。

为什么呢?对我来说,只有每个人都可以看到的页面才能直接导航,这对我没有意义。

1 个答案:

答案 0 :(得分:-1)

如果您使用Visual Studio创建默认项目,然后使用该项目启用表单身份验证,则问题是默认情况下禁用表单身份验证,因为Identity Framework是VS 2015中的默认身份验证机制。

在web.config中查找此条目

<system.webServer>
    <modules>
        <remove name="FormsAuthentication" />
    </modules>
</system.webServer>

然后删除“删除”。