3

既存の Web プロジェクトを MVC に変換しようとしています。VS 2012 で標準の MVC プロジェクトを作成しました。ルーティング構成を追加しました。既存のプロジェクトには、WCF サービスで使用されるルーティング エントリが既に含まれていました。したがって、ルートは次のように構成されます。

// Was here before, used by services
routes.Add(new ServiceRoute("AppServer", new WebServiceHostFactory(), typeof(MyService)));

// the rest is added by vs to configure a default controller
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

サービス部分はより制限的であるため、常に最初に行う必要があることに気付きました。それが最後に置かれると、サービスは機能しません。しかし、今の問題は、

@Html.ActionLink("text", "MyAction", "MyController")

タイプのリンクを生成するようになりました

http://localhost/AppServer?action=MyAction&controller=My

それ以外の

http://localhost/My/MyAction

私が期待するもの。

サービスルートとmvc関連のルートを「平和に生きる」、つまり互いに影響を与えないようにする方法を知っている人はいますか?

4

1 に答える 1

2

MapRoute を一番上に配置してみてください。ただし、次のように制約用の4 番目のパラメーターを追加します。

new { controller = "regex-for-!=-AppServer" }

このように、リンクを作成するとき、ヘルパーは最初に見つかったルートを使用しますが、「/AppServer」への着信要求はスキップされ、ServiceRoute によって処理されます。

于 2012-10-23T20:17:50.560 に答える