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

时间:2009-09-03 17:07:27

标签: c# rest

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

问题是,如果密钥包含'。'例如'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(string id)方法。没有类似于点的键,自定义URL也可以正常工作。

我不确定那个点还是'。'在URL中是否是IIS服务器的特殊字符。如果它是特殊的char,我怎么能逃脱它或使它像字符串参数与内部点?或者我根本不能在我的网址中使用点?

1 个答案:

答案 0 :(得分:0)

我相信您遇到的问题是由System.Web.Routing中的类的工作方式引起的。显然这曾经是ASP.NET MVC人员的问题(see blog post),但根据Phil Haack的帖子,这个问题应该是固定的。也许REST入门套件还没有使用新的Routing dll?