0

これは、ASP.NET MVC でルート値のバインドを無効にする方法に似ていると思いますか? 、しかし、私はその答えを理解していませんでした。

コントローラーの 1 つに、次のようなプロキシ アクションがあります。

public ActionResult Proxy(string path) {
    // Issue a request to another server for the provided path
}

そして、このようなルートルール

routes.MapRoute("Proxy", "Proxy/{*path}", new { controller = "Proxy", action = "Proxy" });

これにより、 http ://www.website.com/Proxy/some/path/hereのようなリクエストをhttp://api.someotherwebsite.com/some/path/hereにプロキシすることができ、これは正常に機能します。ただし、http://www.website.com/Proxy/some/path/here?x=1234などのクエリ パラメータがある場合、MVC はクエリ パラメータxをプロキシ アクションにバインドしようとするため、pathパラメータは最終的にsome/path/hereの代わりに値some/path/here?x=1234。この動作を防ぎ、パス パラメータにクエリ パラメータを含めるにはどうすればよいですか?

4

1 に答える 1

0

正直なところ、カスタム ルーティングを台無しにしようとする代わりに、クエリ文字列をパス パラメーターに追加する方がはるかに簡単なようです。

OtherServerRequest(path + "?" + Request.QueryString);

于 2013-08-16T18:13:00.707 に答える