Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET 4.5 C#表单身份验证对登录页的访问被拒绝_C#_Asp.net_.net_Forms Authentication - Fatal编程技术网

ASP.NET 4.5 C#表单身份验证对登录页的访问被拒绝

ASP.NET 4.5 C#表单身份验证对登录页的访问被拒绝,c#,asp.net,.net,forms-authentication,C#,Asp.net,.net,Forms Authentication,我在这方面找到了一些帖子,但我似乎找不到正确的解决方案: 我有一个.NET4.0Web应用程序,它非常好地使用表单身份验证。现在,我想在4.5中的一个新项目中实现同样的功能,但是当我进入一个未经授权的部分时,登录页面上不断出现401.2(拒绝访问)错误 应用程序正确重定向(在mvc方式下,我的页面中没有.aspx),但在登录页面上,我不断收到错误,由于服务器配置,我无权查看此页面 然后我尝试了微软的演示,上面说支持Framework4.5,但仍然不起作用 这是我的常规web.config部分:

我在这方面找到了一些帖子,但我似乎找不到正确的解决方案:

我有一个.NET4.0Web应用程序,它非常好地使用表单身份验证。现在,我想在4.5中的一个新项目中实现同样的功能,但是当我进入一个未经授权的部分时,登录页面上不断出现401.2(拒绝访问)错误

应用程序正确重定向(在mvc方式下,我的页面中没有.aspx),但在登录页面上,我不断收到错误,由于服务器配置,我无权查看此页面

然后我尝试了微软的演示,上面说支持Framework4.5,但仍然不起作用

这是我的常规web.config部分:

<authentication mode="Forms">
  <forms loginUrl="/admin/Login.aspx" />
</authentication>

有什么想法吗


编辑当我将login.aspx的位置更改为受保护区域外的文件夹时,我会正确重定向,但我希望像以前一样将login.aspx页面保留在受保护文件夹内。visual studio自动允许访问loginUrl=“”,否?

请使用以下代码并重试。 这是相反的做法

<system.web>
   <authorization>
      <allow users="?" />
    </authorization>
</system.web>

确保您的web.config文件与aspnetdb的连接设置正确,并且您使用的是正确的成员资格提供程序

其他一些故障排除技巧:

右键单击web解决方案并确保设置了以下属性:


  • 匿名身份验证=已启用
  • Windows身份验证=已禁用
  • 在应用程序中设置一个断点,并确保你达到了目标 正确的数据库。如果您尚未注册帐户,则 应重定向到注册网页
在4.5中,默认布局将创建一个帐户文件夹,其中包含登录、注册和其他OpenAuthProviders类型的网页,以便您可以管理所有用户安全。 但是,您不必遵循此模型。 我会从MSDN上读到这个


对我的跑步记录在web.config中的下一个模块进行注释:

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

就我而言,这个问题与Visual Studio 2017有关。我的任务是将旧的.net网站转换为web应用程序项目。作为任务的一部分,我创建了一个新的VS2017 web应用程序项目,从旧网站代码库中复制了所需的文件,运行了转换为web应用程序,添加了名称空间,等等,并且基本上都能正常工作

该应用程序使用表单身份验证,webconfig表单标记引用LocalLogin.aspx页面,但我会在浏览器中收到“访问被拒绝”消息,并且永远无法访问LocalLogin.aspx页面。在谷歌搜索了很多次后,我发现:

“Visual Studio 2017将自动将名为Microsoft.AspNet.FriendlyURL的NuGet程序包添加到您的网站或web应用程序项目中。由于此程序包,表单身份验证将无法工作,甚至登录页面也不会多次呈现。”有关详细信息,请转到此线程:

在研究了该线程中可能的解决方案后,我选择删除友好URL引用(Microsoft.AspNet.FriendlyURL),并将扩展保留在web.config表单标记中的loginUrl和defaultUrl元素上。顺便说一句,解决方案中没有添加NuGet包,只有引用。我删除了引用,还必须注释掉routeconfig调用和方法

这样做之后,它仍然在浏览器中给出了“access is denied”消息,但事实证明,我还需要从浏览器中删除一个缓存的永久301重定向到友好URL,这是使用FriendlyURL组件创建的

我在谷歌上搜索了“从浏览器缓存中删除301重定向”,并遵循以下步骤:

“要清除永久重定向,请转到chrome://net-internals. 在顶部红色状态栏的右侧,单击向下箭头▼ 要打开下拉菜单,在“工具”组下,选择“清除缓存”。从48版开始,这是我清除缓存301的唯一有效方法。”


现在,一切都好了,希望我的一些拔出来的头发能长回来

尝试此操作-替换您的loginUrl


loginUrl=“~/admin/Login.aspx”

禁用友好URL对我来说很有效


如果您不关心这样做的含义,只需从
RouteConfig
类中删除
routes.enableFriendlyURL(设置)

当我授予每个人访问权限时(如您的示例)我可以正确地输入页面。当我将admin/login.aspx更改为just login.aspx时,会出现404 not found错误,因为我没有登录页面。我想将我的登录页面保存在安全文件夹中。我还尝试添加一个默认的membershipprovider,但总是出现同样的错误。这就是我没有会员资格提供者的原因。我还更新了我的问题。听起来问题是因为您的web项目禁用了匿名身份验证。可能不是,但右键单击project并检查它是否设置为启用。听起来这不是DB问题,因为您无法访问登录页面。是否在管理员文件夹中有单独的web.config文件?您可以输入代码吗?匿名身份验证=已启用,Windows身份验证=已禁用。它确实是一个不同的web.config文件,但我无法在打开时插入代码。您的网站是否有一个Startup.Auth.cs类,您可以在其中设置断点?Kershaw,您是上帝。非常感谢。
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" defaultUrl="~/" />
    </authentication>
<system.webServer>
      <!--<modules><remove name="FormsAuthentication" />
      </modules>-->  
</system.webServer>