被重定向到错误的loginUrl - >帐户/登录而不是帐户/登录

时间:2011-08-30 03:27:35

标签: asp.net-mvc-3

我有一个我从未遇到的奇怪错误。

我通过以下方式获得了一个控制器:

[Authorize(Roles = "admin")] 
public class LoggingController : Controller

当非管理员用户尝试访问任何受保护的内容时,会将其重定向到:

http://localhost:50501/Account/Login?ReturnUrl=%2flogging

注意:帐户/ 登录而非帐户/ 登录

AccountController.Login操作不存在。

web.config有:

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

我当然可以实现Login操作并重定向到Logon。 我只是感到困惑,想知道为什么会这样。

4 个答案:

答案 0 :(得分:25)

搜索您的项目以进行登录 - 必须在某处指定。是否有任何其他web.config值覆盖此(可能正在查看子根并且正在使用父值) 还有任何正在发生的重定向吗?您的机器的web.config中是否设置了默认值? 您在项目上的默认网址是否为/ login?

安装glimpse route debugger以查看该页面正在使用哪条路线。

修改: 更多的研究产生了一个已知的问题。 看看这个链接: ASP.NET MVC issue with configuration of forms authentication section

Theres a mvc 3 beta中的一个错误 - 你运行beta位吗? 另请注意上面的RTM位URL中提到的项目:

<add key="loginUrl" value="~/LogOn" />

同时退房 http://forums.asp.net/p/1616153/4138366.aspx

编辑2

以下是关于@santiagoIT的潜在来源的可靠评论(如果具体细节可以帮助你,请提出他的评论)

今天我发现了这个问题的根源:我在'带有Razor语法的ASP.NET网页'上添加了'可部署依赖'。这会添加对以下内容的引用:WebMatrix.Data.dll此程序集有一个带有静态构造函数的类,它执行以下操作:static FormsAuthenticationSettings(){FormsAuthenticationSettings.LoginUrlKey =“loginUrl”; FormsAuthenticationSettings.DefaultLoginUrl =“〜/ Account / Login”;}这解释了!

答案 1 :(得分:3)

这对我有用,我正在使用MVC 3

<appSettings>
    <add key="loginUrl" value="~/Account/LogOn" />
</appSettings>
<system.web>
    <authentication mode="Forms">
        <forms loginUrl="~/Account/LogOn" name=".ASPXFORMSAUTH" />
    </authentication>
</system.web>

此外,我发现将followinf部分添加到Web配置(仅在调试配置期间)有助于加快我的调试速度,因为必须对任何页面进行身份验证。

<authorization>
    <deny users="?" /> <!-- remove after debugging -->
</authorization>

答案 2 :(得分:2)

只需删除WebMatrix dll(如果它们存在于已部署的bin文件夹中)。

答案 3 :(得分:1)

我这样修理了

1)转到IIS

2)选择你的项目

3)点击“身份验证”

4)点击“匿名身​​份验证”&gt;编辑&gt;选择“应用程序池标识”而不是“特定用户”。

5)完成。