我正在使用带有Web API的ASP.NET MVC 4 Beta - 尽管我认为路由实现与.NET 4.0没有显着差异。在下面的代码中使用的MapHttpRoute
附带MVC 4,它是一种扩展方法,它基本上执行与MapRoute相同的功能,但是对于WebApi控制器。
我有一个遗留的web服务方法,我想为它创建一个ASP.NET路由。该方法目前有以下签名:
NewsItemList ListNewsItems(string category, int maxResults)
它应该由URI看起来像这样的请求映射:
~/news?category=finance&maxResults=50
两者都不存在查询字符串参数。
我正在努力寻找一种方法来定义支持此方法的路线。
我使用MapHttpRoute
来注册路由,并将控制器和操作值的默认值设置为适当的控制器和方法。以下是我尝试过的一些模板:
"news"
捕获"~/news"
并正确绑定到该方法,但是
没有用查询字符串捕获任何内容。"news{*query}
不是
允许,因为你不能拥有一个全能,除非它是独家的
Uri部分"news{query}"
捕获查询字符串,但不是
绑定到方法我正在寻找一种不太激进的前进方式,因为这是应用程序中的边缘情况。解决方案必须适应许多其他现有路线。理想情况下,我也想避免沿着Uri重写路径走下去。
答案 0 :(得分:1)
这是我测试方式的一个问题。我错误地认为HttpRequestBase.AppRelativeCurrentExecutionFilePath
包含请求uri的查询字符串部分。它不是。当我纠正我的模拟时,一切都开始有效了。