サービスルートのASP.NET MVCフォームアクション

私はASP.NET MVCアプリを開発しています。私は既定のルーティングルールだけを使用しています。私はこのようなコードを使ってフォームをレンダリングするいくつかのビューを持っています:

@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&controller = Register '

だから私の質問は:私はどのように私のすべての既存のフォームを破ることなく新しいサービスをルーティングするのですか?

そしてボーナスポイントのために:一体はここで何が起こっているの?

1
マッピングの順番を変更しようとしましたか?
追加された 著者 Emmanuel N,

1 答え

以下のように使用してみてください。

//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
  );

ルートのコードを変更するとリファレンスリンクはうまくいくはずです。  また、このブログで動的サービス経路を選択します。

0
追加された
コードサンプルのルートが機能しませんでした。しかし、あなたがリンクしているDynamic Service Routeがこのトリックを行いました。ありがとう!
追加された 著者 Brian Reischl,