我有一个在 IIS 7.5 上运行的 ASP.NET MVC 应用程序。 已启用表单验证
我可以访问登录页面。 (这意味着路由没问题)但是当我登录时,应用程序应该将发布数据发送到 http://localhost/tgpwebged/Account/Login
来验证用户身份。
问题是我的应用程序正在 http://localhost/Account/Login
中查找/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 - 未找到 您要查找的资源已被删除、更名或暂时不可用。
一些详细信息:
请求的 URL http://localhost:8081/Account/Login
(正确路径:http://localhost:8081/tgpwebged/Account/Login
)
物理路径 S:\Projects\Account\Login (应为 S:\Projects\tgpwebged\Account\Login)
登录方式 匿名
匿名用户登录
最佳答案
POST 将指向错误的 URL,因为这是您在 View 中提到的内容。参见
<form method="post" action="/Account/Login">
这将始终发布到 <host name>/Account/Login
尝试给出相对路径(或使用 ResolveUrl 方法替换绝对路径) - 例如,在 aspx View 中,您可以使用
<form method="post" action='<%= this.ResolveUrl("~/Account/Login") %>' >
在razor(cshtml) View 中,您可以尝试(未经测试)
<form method="post" action='@Url.Content("~/Account/Login")' >
关于asp.net-mvc - 登录后出现404.0错误。 Asp.Net MVC 和 IIS 7.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13621401/