登录后错误404.0。 Asp.Net MVC和IIS 7.5

时间:2012-11-29 08:13:02

标签: asp.net-mvc iis iis-7 asp.net-mvc-4 iis-7.5

我有一个在IIS 7.5上运行的ASP.NET MVC应用程序。 已启用表单身份验证

我可以访问登录页面。 (这意味着路线没问题)但是当我登录应用程序时,应该将帖子数据发送到http://localhost/tgpwebged/Account/Login以验证用户身份。

问题是我的应用程序正在http://localhost/Account/Login寻找/帐户/登录(这不是路径)。

我正在尝试没有成功改变这种行为。

这是我的 route.config

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional }

的web.config

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

查看

<form method="post" action="/Account/Login">

此外,IIS设置为接受匿名登录,以便用户能够访问登录页面。

这是我收到的错误消息:

TTP错误404.0 - 未找到 您要查找的资源已被删除,名称已更改或暂时不可用。

一些详细信息:

请求的网址http://localhost:8081/Account/Login(正确的路径:http://localhost:8081/tgpwebged/Account/Login) 物理路径S:\ Projects \ Account \ Login(应为S:\ Projects \ tgpwebged \ Account \ Login) 登录方法匿名 登录用户匿名

1 个答案:

答案 0 :(得分:2)

POST会出错,因为这是您在视图中提到的内容。参见

<form method="post" action="/Account/Login">

这将始终发布到<host name>/Account/Login

尝试给出相对路径(或使用ResolveUrl方法替换绝对路径) - 例如,在aspx视图中,您可以使用

<form method="post" action='<%= this.ResolveUrl("~/Account/Login") %>' >

在razor(cshtml)视图中,您可以尝试(未经测试)

<form method="post" action='@Url.Content("~/Account/Login")' >