ASP.NET MVC问题配置表单身份验证部分

jwa*_*zko 21 asp.net iis asp.net-mvc asp.net-mvc-3

我有一个在IIS上运行的ASP.NET MVC 3 Beta应用程序.在我web.config定义的以下部分负责表单身份验证:

<authentication mode="Forms">
    <forms 
        loginUrl="~/Account/LogOn" 
        name=".VNK" 
        protection="All" 
        timeout="43200" 
        cookieless="UseCookies" />
</authentication>
Run Code Online (Sandbox Code Playgroud)

定义的登录地址是~/Account/LogOn.

当我尝试使用以下命令获取登录URL时:

FormsAuthentication.Initialize();
string loginUrl = FormsAuthentication.LoginUrl; 
Run Code Online (Sandbox Code Playgroud)

我收到: /VNK/site/Account/Login

为什么我从定义的地址获得不同的地址web.config

更新:"/ VNK/site /"前缀在这里不是问题.问题是类的LoginUrl属性FormsAuthentication不反映web.config的值.这意味着如果我将loginUrlweb.config中的属性值从"〜/ Account/LogOn"更改为例如"〜/ foobar",则FormsAuthentication.LoginUrl仍具有"/ VNK/site/Account/Login"的值.为什么?

jwa*_*zko 27

我认为ASP.NET MVC 3 Beta中存在一个错误.ASP.NET MVC的早期版本中不会出现此问题.

如果有人想重播这个错误,他应该遵循这个:

1.下载mvc framevork.

2.创建新的ASP.NET MVC 3 Web应用程序

3 .Applay Authorize上属性About在动作HomeController

[Authorize]
public ActionResult About()
{
   return View();
}  
Run Code Online (Sandbox Code Playgroud)

4.单击" 关于"选项卡,启动应用程序并调用" 关于"操作.您将收到服务器错误,因为应用程序正在尝试将您重定向到此类URL:

HTTP://本地主机:[port_num] /帐户/登录RETURNURL =%2fHome%2fAbout

显然没有登录视图.有LogOn视图.Url to LogOn操作在未触及的web.config中定义:

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
Run Code Online (Sandbox Code Playgroud)

但申请并没有反映出这一点.有谁知道发生了什么?

更新:

我是对的,MVC 3 Beta中有一个错误.从已知问题:

"有一个已知问题导致表单身份验证始终将未经身份验证的用户重定向到/ Account/Login,忽略了Web.config中使用的表单身份验证设置.解决方法是添加以下应用程序设置."

<add key="autoFormsAuthentication" value="false" />
Run Code Online (Sandbox Code Playgroud)

更新2:

Alexander Prokofyev注意到,ASP.NET 3 RTM寻找另一种设置.所以你需要这条线:

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

  • ASP.NET 3 RTM查找另一个设置.所以你需要这一行:*<add key ="loginUrl"value ="〜/ LogOn"/>* (22认同)