<authentication mode="Forms"> <forms loginUrl="~/Account/logon" name=".VNK" protection="All" timeout="43200" cookieless="UseCookies" /> </authentication>
FormsAuthentication.Initialize(); string loginUrl = FormsAuthentication.LoginUrl;
我收到:/ VNK / site / Account / Login
为什么我从web.config中定义的地址不同?
更新:“/ VNK / site /”前缀在这里不是问题。问题是FormsAuthentication类的LoginUrl属性不反映web.config中的值。这意味着如果我将web.config中的loginUrl属性的值从“〜/ Account / logon”更改为例如。 “〜/ foobar”,FormsAuthentication.LoginUrl仍然具有“/ VNK / site / Account / Login”的值。为什么
解决方法
如果有人想重播这个错误,他应该遵循:
2.创建新的ASP.NET MVC 3 Web应用程序
3.在HomeController的“关于动作”上显示Authorize属性
[Authorize] public ActionResult About() { return View(); }
4.启动应用程序并通过单击关于选项卡调用关于操作。您将收到服务器错误,因为应用程序正在尝试将您重定向到此类URL:
http://localhost:[port_num]/Account/Login?ReturnUrl=%2fHome%2fAbout
显然没有登录视图。有logon视图。 Url to logon动作在未触动的web.config中定义:
<authentication mode="Forms"> <forms loginUrl="~/Account/logon" timeout="2880" /> </authentication>
但是应用并没有反映出来。有人有任何线索发生了什么吗?
更新:
我是对的,MVC 3 Beta有一个错误。从known issues:
“有一个已知的问题导致窗体验证总是将未经身份验证的用户重定向到/ Account / Login,忽略Web.config中使用的表单验证设置。解决方法是添加以下应用程序设置。
<add key="autoFormsAuthentication" value="false" />
更新2:
亚历山大Prokofyev注意到,ASP.NET 3 RTM寻找另一个设置。所以你需要这一行:
< add key =“loginUrl”value =“〜/ logon”/>