Asp.net MVC表单操作URL设置不正确

Asp.net MVC表单操作URL设置不正确,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我正在开发我的第一个MVC应用程序,我已经有一个BeginForm的问题。当我在本地测试项目时,登录表单操作被(正确地)设置为 您的代码没有问题。如果您将应用程序作为虚拟目录或应用程序托管在IIS中的网站下,则ASP.NET MVC帮助程序(如Html.BeginForm)会将此应用程序名称考虑在内是完全正常的。因此,您看到的/appname前缀表示网站下IIS中的应用程序名称。您可以在一个网站下托管多个ASP.NET MVC应用程序,您可以看到ASP.NET MVC帮助程序正确地考虑了这些应用

我正在开发我的第一个MVC应用程序,我已经有一个BeginForm的问题。当我在本地测试项目时,登录表单操作被(正确地)设置为


您的代码没有问题。如果您将应用程序作为虚拟目录或应用程序托管在IIS中的网站下,则ASP.NET MVC帮助程序(如Html.BeginForm)会将此应用程序名称考虑在内是完全正常的。因此,您看到的
/appname
前缀表示网站下IIS中的应用程序名称。您可以在一个网站下托管多个ASP.NET MVC应用程序,您可以看到ASP.NET MVC帮助程序正确地考虑了这些应用程序


另一方面,如果您直接将应用程序作为网站托管在IIS中,而不创建任何子应用程序,则url帮助程序将考虑到这一点,并生成
action=“/account/Login”

显示生成此表单的代码。您是否将其托管在虚拟目录中?不,它是实际的IIS应用程序。我应该改为使用虚拟目录吗?不,我不能使用虚拟目录,因为我需要在子文件夹中使用web配置。我很感谢您的回复,但如何让它工作?我是否必须添加一个应用程序名为硬编码的新路由表条目?您已经让它正常工作了。如果不想在URL前面看到应用程序名称,则需要直接在IIS的根网站下设置ASP.NET MVC应用程序。或者在IIS(如HAProxy或nginx)前面使用反向代理,该代理将进行URL重写并删除应用程序名称。但是,当您在登录表单上按Submit时,什么也不会发生!这是一个完全不同的问题,我非常怀疑这和你们的路线有关。您能看到在Fiddler中发出的实际POST请求吗?但是当您在本地调试时,它会工作。我能想到的唯一原因是表单操作URL在发布时不起作用。它的行为就像它从未击中AccountController一样
    @using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
 {
............ form
  }
public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }