我有一个在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)
登录方法匿名
登录用户匿名
答案 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")' >