Asp.net mvc ASP.NET MVC服务路由的表单操作

Asp.net mvc ASP.NET MVC服务路由的表单操作,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,我正在开发一个ASP.NETMVC应用程序。我只使用了默认的路由规则。我有许多视图使用如下代码呈现表单: @using (Html.BeginForm("ForgotPassword", "Register", FormMethod.Post)) 这一直运作良好。表单操作将发布到/myapp/register/forgotpassword,一切都很好 现在需要将一些服务端点添加到同一个应用程序中。因此,我在默认路由之上添加了一些新路由。路由设置现在看起来像: //New rule RouteT

我正在开发一个ASP.NETMVC应用程序。我只使用了默认的路由规则。我有许多视图使用如下代码呈现表单:

@using (Html.BeginForm("ForgotPassword", "Register", FormMethod.Post))
这一直运作良好。表单操作将发布到
/myapp/register/forgotpassword
,一切都很好

现在需要将一些服务端点添加到同一个应用程序中。因此,我在默认路由之上添加了一些新路由。路由设置现在看起来像:

//New rule
RouteTable.Routes.Add(
    new ServiceRoute(
    "api/user", new MyCustomerServiceHostFactory(),
    typeof(UserWebservice)));

//Default rule
routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
  );
在我加入新规则后,我所有的表格都被打破了。检查HTML,我可以看到表单操作是
/myapp/api/user?action=ForgotPassword&;控制器=寄存器'
,这是完全错误的

所以我的问题是:如何在不破坏所有现有表单的情况下路由新服务

还有额外的积分:这到底是怎么回事

试着使用以下方法

//New rule
RouteTable.Routes.Add(
    new ServiceRoute(
    "UserWebservice", new MyCustomerServiceHostFactory(),
    typeof(UserWebservice)));

//Default rule
routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
  );
我认为更改路由添加为链接的代码应该有效。
另外,请检查此博客以进行创建。

如果您试图更改映射的顺序,请将默认设置置于service one之上。代码示例中的路由无效。然而,您链接到的动态服务路线成功了。谢谢