REST服务:使用特殊字符串参数向URL请求请求

我用REST Start Kit Preview 2编写了一个简单的REST集合WCF服务。模板项目提供了一个带有Dictionary集合实例的Service类作为其内部集合项目。 每个项目都有一个键和一个值。

问题是,如果密钥包含'。' 如'ProductA.Item1',那么我对特定项目的查询将不起作用。 对此项目的URL GET请求如下所示:

  http://localhost:1247/Service.svc/ProductA.Item1

它看起来像IIS将URL视为资源而不是将xxx.xxx作为参数传递给我的REST服务的OnGetItem(字符串id)方法。 如果我删除'.Item1'的部分(使用像'ProductAItem1'之类的非点状键构建内部集合),它可以正常工作。

我甚至尝试将WebGet属性的UriTemplate更改为Products({id}),然后尝试使用此自定义URL:

  http://localhost:1247/Service.svc/Products(ProductA.Item1)
  http://localhost:1247/Service.svc/Products('ProductA.Item1')

仍然我无法达到我的代码OnGetItem(字符串id)方法。 没有点状按键,自定义网址也可以正常工作。

我不确定那个点或'。' 在URL中是否是IIS服务器的特殊字符。 如果它是特殊的字符,我怎么可以转义它或使它像内部点的字符串参数? 或者我不能在我的网址中使用点?


我相信你遇到的问题是由System.Web.Routing中的类的工作方式造成的。 显然,这曾经是ASP.NET MVC家伙的一个问题(参见博客文章),但根据菲尔哈克的帖子,这个问题应该是固定的。 也许REST入门工具包不使用新的Routing dll呢?

链接地址: http://www.djcxy.com/p/71441.html

上一篇: REST service: Get Request to a URL with a special string parameter

下一篇: Paging in a Rest Collection