2011-08-30 70 views
28

我有一个奇怪的错误,我从来没有遇到过。被重定向到错误的loginUrl - >帐户/登录而不是帐户/ LOGON

我获得了控制器:

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

当非管理员用户试图访问任何受保护的内容,他们将被重定向到:

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

注:帐号/ 登录和NOT帐户/ 登录

AccountController.Login操作不存在。

的web.config有:

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

我当然可以实现登陆行动,并重定向到登录。 我只是困惑,想知道为什么发生这种情况。

回答

25

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

安装glimpse路由调试程序以查看哪个路由正在用于此页面。

编辑: 多一点研究会产生一个已知问题。 看看这个链接: ASP.NET MVC issue with configuration of forms authentication section

Theres在mvc 3测试版中的错误 - 你运行测试位? 还要注意在上面的URL中提到的项目为RTM位:

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

还检查了 http://forums.asp.net/p/1616153/4138366.aspx

EDIT 2

下面是关于从这个潜在来源坚实的评论@santiagoIT(请提供他的评论,如果具体的帮助你)

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

+0

我没有搜索登录,但没有出现。我明天会尝试你的建议。我正在使用wcf web api,这是我认为不寻常的事情。 stilll非常不解... – santiagoIT

+0

看到编辑上面 –

+0

Thx!我向appSetting添加了并且它工作正常。 我当然希望我没有运行mvc 3测试版。 我的System.Web.Mvc.dll显示v3.0.0.0。这是测试版吗? – santiagoIT

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> 
1

我固定它这样

1)进入加时赛IIS

2)选择您的项目

3)点击 “验证”

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

5)完成。

2

只需简单地删除WebMatrix dll,如果它们存在于您部署的bin文件夹中。