0

我认为这类似于如何在 ASP.NET MVC 中禁用路由值的绑定?,但我不明白那个答案。

我的一个控制器中有一个代理操作,看起来像这样

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 回答