1

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

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

问题是我的应用程序正在寻找 /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 }

网络配置

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

看法

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

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

这是我收到的错误消息:

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

一些详细信息:

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

4

1 回答 1

2

POST 将指向错误的 URL,因为这是您在视图中提到的。看

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

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

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

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

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

<form method="post" action='@Url.Content("~/Account/Login")' >
于 2012-11-29T08:18:30.640 回答