C# ASP.NET应用程序中的登录页,表单身份验证访问被拒绝

C# ASP.NET应用程序中的登录页,表单身份验证访问被拒绝,c#,asp.net,C#,Asp.net,我有一个需要用户登录的webapp正在运行。 网络配置: <!--Logging in stuff--> <authentication mode="Forms"> <forms loginUrl="login.aspx" timeout="2880"/> </authentication> <authorization> <deny users="?"/>

我有一个需要用户登录的webapp正在运行。 网络配置:

    <!--Logging in stuff-->
    <authentication mode="Forms">
        <forms loginUrl="login.aspx" timeout="2880"/>
    </authentication>
    <authorization>
        <deny users="?"/>
    </authorization>
我知道if语句可以工作,就像我以前登录时使用的方法一样


但是,当我运行应用程序时,登录页面立即打开,出现错误401.2。非常感谢您的帮助:)

由于您使用的是Visual Studio 2017,您需要检查的第一件事是是否包含
Microsoft.AspNet.friendly URL包。完成以下步骤

  • 评论Global.asax中的行
    RouteConfig.RegisterRoutes(RouteTable.Routes)
    并立即尝试您的页面。但是,请确保清除浏览器中的缓存,否则此URL的旧缓存版本将继续显示401.2错误
  • 如果您仍然看到一些问题,那么只需通过 在解决方案资源管理器中选择“解决方案”节点,然后转到“工具” =>NuGet软件包管理器=>为解决方案管理软件包;签入此软件包的已安装列表,选择它并选择解决方案 选中右侧的复选框,然后单击卸载按钮
以下是您需要确保的一些其他事项

尝试将web配置中的表单标记更改为以下内容。根据需要更改defaultUrl和timeout的值

<authentication mode="Forms">
<forms loginUrl="login.aspx" defaultUrl="home.aspx" 
   slidingExpiration="true" timeout="20" name=".Auth" protection="All">
</forms>
</authentication>
<authorization>
  <deny users="?" />
  <allow users="*" />
</authorization>

进入“控制面板>管理工具>Internet信息服务管理器”,打开IIS管理控制台。然后,展开“网站”节点并选择您正在使用的网站。现在双击右窗格中的身份验证,确保启用了匿名身份验证和表单身份验证,并禁用了其他选项,如以下屏幕截图所示:

我发布了另一个答案,因为这涉及到使用Visual Studio 2017进行表单身份验证的典型问题,这是我之前回答的另一个问题

Visual Studio 2017将自动将名为Microsoft.AspNet.FriendlyURL的NuGet软件包添加到您的网站或web应用程序项目中。由于这个包,表单身份验证将无法工作,甚至登录页面也不会呈现很多次

  • 我在上一个答案中解释的解决方案是删除此选项 在global.asax的Application_Start事件中打包或注释行 也就是说
    RouteConfig.RegisterRoutes(RouteTable.Routes)。如果使用这种方法,您的网站将失去FriendlyURL的好处
  • 但是,下面两种不同的配置中提到了第三种解决方案;你可以使用它们中的任何一个

    • 配置1从登录和默认URL中删除aspx扩展名
      价值观

    • 配置2保留了aspx扩展,但添加了特殊访问权限 对应于login.aspx的freindlyurl的权限

    在访问权限中表示所有未经验证的用户,
    *
    表示所有用户,即已验证+未经验证的用户)

注意:我已经尝试并测试了这个解决方案

使用友好URL时表单身份验证配置的配置1

<authentication mode="Forms">
<forms loginUrl="login" defaultUrl="home" 
   slidingExpiration="true" timeout="20" name=".Auth" protection="All">
</forms>
</authentication>
<system.web>
<!--keep the aspx extensions for login and default pages-->
<authentication mode="Forms">
    <forms loginUrl="login.aspx" defaultUrl="home.aspx" 
       slidingExpiration="true" timeout="20" name=".Auth" protection="All">
    </forms>
    </authentication>
</system.web>

<!-- add access permissions for friendly url corresponding to login.aspx-->
<location path="login">
        <system.web>
            <authorization>
                <allow users="?" />
                <deny users="*" />
            </authorization>
        </system.web>
    </location>
</configuration>

使用友好URL时表单身份验证配置的配置2

<authentication mode="Forms">
<forms loginUrl="login" defaultUrl="home" 
   slidingExpiration="true" timeout="20" name=".Auth" protection="All">
</forms>
</authentication>
<system.web>
<!--keep the aspx extensions for login and default pages-->
<authentication mode="Forms">
    <forms loginUrl="login.aspx" defaultUrl="home.aspx" 
       slidingExpiration="true" timeout="20" name=".Auth" protection="All">
    </forms>
    </authentication>
</system.web>

<!-- add access permissions for friendly url corresponding to login.aspx-->
<location path="login">
        <system.web>
            <authorization>
                <allow users="?" />
                <deny users="*" />
            </authorization>
        </system.web>
    </location>
</configuration>


希望这有帮助。评论不用于扩展讨论;这段对话已经结束。我使用的代码与您在配置2下发布的代码相同。完成这项工作所需的唯一机会是和。谢谢你的回答。你刚刚赢得了一张赞成票。@Sunil谢谢你,先生!这个解决方案!。我以为我永远也找不到解决这个问题的办法