1

ASP.NET Web API で次の要求を受け取りたい:

http://domain.com/proxy/service?id=12

最初の /proxy/ 部分でのみ一致し、このコントローラーアクションにルーティングします。したがって、アクションのパラメーターは URL の残りの部分になります: "service?id=124"

public string Get(string url)
{
    //Calls external resource and returns response
}

URL には、クエリ文字列 (複数のリモート サーバーを呼び出すためのプロキシとして機能する) の後に、任意の数のセグメントを含めることができますが、一致しません。

以下のようなものが欲しいのですが、うまくいきません。URL の /proxy/ 部分の後に複数のセグメントがあるとすぐに、一致するように調整されます。

config.Routes.MapHttpRoute(
      name: "ApiProxy",
      routeTemplate: "proxy/{resourcePath}",
      defaults: new { Controller = "Proxy", Action="Get" }
 );

私は MessageHandlers を調べましたが、それらはすべてのリクエストに対して起動されます。これは理想的ではないようで、代わりに標準の Web Api ルーティングに結び付けられることを望んでいました。

4

2 に答える 2