使用创建的登录页面在ASP.NET MVC 4中进行身份验证

时间:2013-07-23 13:56:07

标签: asp.net-mvc-4

我想使用自己的登录页面进行身份验证,但它给了我这个错误

描述:HTTP 404.您正在查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。

请求的网址:/帐户/密码锁

任何人都知道为什么?这是我的代码,我创建了一个名为PasswordLock.aspx的新页面,其中包含一个登录工具。一切都可以使用原始登录表单,但不是我自己的。

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

虽然这样可以正常使用

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

由于

1 个答案:

答案 0 :(得分:1)

在ASP.NET MVC中,您的URL不会映射到文件;他们映射到行动。因此,在~/Accounts/PasswordLock.aspx处拥有文件无济于事。您需要的是该URL的路由。这些路由通常在名为RouteConfig的文件中设置,该文件位于App_Start文件夹下,由Global.asax中的Application_Start()方法执行。通常的默认路线如下所示:

routes.MapRoute(
    name: "default",
    routeTemplate: "{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional });

这意味着www.example.com/Accounts/PasswordLock的网址会映射到名为AccountsController的控制器,以及该控制器上名为PasswordLock的方法。此方法应返回View,默认情况下将调用PasswordLock.cshtml。请注意,新的Razor v2视图引擎使用的是.cshtml个文件,而不是.aspx

这对ASP.NET MVC编程来说非常重要;听起来有点像你在盲目地跳进去。我强烈建议您阅读www.asp.net/mvc上的教程,尤其是controllers and routing上的教程。

相关问题