我有一个奇怪的错误,我从来没有遇到过。
我安装了一个控制器:
[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>
解决方法
搜索项目以进行登录 – 必须在某处指定。是否有任何其他web.config值覆盖此(可能查看子根和父值正在使用)
也有任何重定向发生吗?您的机器的web.config中是否设置了任何默认值?
你的默认url在项目设置是一个/ login?
也有任何重定向发生吗?您的机器的web.config中是否设置了任何默认值?
你的默认url在项目设置是一个/ login?
安装glimpse路由调试器以查看此页面使用哪条路由。
编辑:
更多的研究产生一个已知的问题。
查看此链接:
ASP.NET MVC issue with configuration of forms authentication section
Theres在mvc 3测试版的一个错误 – 你运行beta位?
还要注意RTM位的上述URL中提到的项目:
<add key="loginUrl" value="~/logon" />
另外检查
http://forums.asp.net/p/1616153/4138366.aspx
编辑2
下面是一个关于这个从@santiagoIT的潜在来源的固体评论(upvote他的评论,如果具体情况帮助你)
今天我发现了这个问题的根源:我在“使用Razor语法的ASP.NET网页上添加了’deployable dependency’。这增加了一个引用:WebMatrix.Data.dll这个程序集有一个类,静态构造函数执行以下操作:static FormsAuthenticationSettings(){FormsAuthenticationSettings.LoginUrlKey =“loginUrl”; FormsAuthenticationSettings.DefaultLoginUrl =“〜/ Account / Login”;}这解释了!