2012-03-08 38 views
1

我正在使用带有Web API的ASP.NET MVC 4 Beta--尽管我相信路由实现与.NET 4.0相关的这个问题没有显着差异。在下面的代码中使用的MapHttpRoute与MVC 4一起提供,并且是基本上执行与MapRoute相同的功能的扩展方法,但是对于WebApi控制器。具有固定URI的ASP.NET路由不映射查询字符串参数

我有一个遗留的web服务方法,我想创建一个ASP.NET路由。该方法目前有以下特征:

NewsItemList ListNewsItems(string category, int maxResults) 

应该由他们的URI是这样的请求被映射:

~/news?category=finance&maxResults=50 

都不是,一个或两个查询字符串参数可以存在。

我正在努力寻找一种方法来定义路线来支持此方法。

我使用MapHttpRoute来注册路径并将控制器和操作值的默认值适当地设置到控制器和方法。这里有一些模板,我已经对这一结果的尝试:

  • "news"捕捉"~/news"并正确绑定到的方法,但 不会捕捉与查询字符串什么。
  • "news{*query}不 允许的,因为你不能有一个包罗万象的,除非它是独家 的URI段
  • "news{query}"捕捉查询字符串,但并不 结合的方法

我m寻找一种前进的方式,这不是太激进的离开,因为这是应用程序中的边缘情况。该解决方案必须符合许多其他现有路线。理想情况下,我想避免重蹈Uri的重写路径。

回答

1

这是我在测试时遇到的一个问题。我错误地认为HttpRequestBase.AppRelativeCurrentExecutionFilePath包含请求URI的查询字符串部分。它不是。当我纠正我的模拟,一切开始工作。

相关问题