2013-03-27 87 views
3

默认值我有一个DTO具有定义异常与路线

 [Route("/route/{Id}/{Status}")] 
     public class JustIdAndStatus : IReturn { 
      public long Id { get; set; } 
      public long Status { get; set; } 
     } 

然后我调用服务的东西,如

本地主机以下路线:9040 /路线/百分之一

localhost:9040/route/0/100

并且一切顺利。

但是当我使用其中一个服务客户端时,如果任何值为0(长为默认值),我会得到一个异常。

var client = new JsonServiceClient("http://127.0.0.1:9040"); 

    var request = new JustIdAndStatus() { 
        Id = 0, 
        Status = 1 
       }; 

    var response = client.Get(request); 

我得到的例外是

System.InvalidOperationException : None of the given rest routes matches 'JustIdAndStatus' request: 
    /route/{Id}/{Status}: Could not match following variables: Id 
    at ServiceStack.ServiceClient.Web.UrlExtensions.ToUrl(IReturn request, String httpMethod, String formatFallbackToPredefinedRoute) in UrlExtensions.cs: line 65 
    at ServiceStack.Common.Tests.UrlExtensionTests.Can_create_url_with_JustIdAndStatus(Int64 id, Int64 status) in UrlExtensionTests.cs: line 91 

我的问题找到了这个承诺的服务栈库 https://github.com/ServiceStack/ServiceStack/commit/b34a5906a265da19d916ea47ee80783bd866abcb

我注意到,当我更新从ServiceStack 38年9月3日至来自nuget的3.9.40。

我想知道如果这种行为是正确的,所以我用错误的方式使用路线,或者这可能是一个问题,可以提交给github上的问题跟踪器。

我也做一个测试使用的是基本的人我事先就ServiceStack.Commons源代码

https://gist.github.com/anonymous/5216727

感谢找到了!

回答

3

我同意你的看法,你所描述的应该是预期行为,其中路径中特别引用了该属性。

您引用的提交旨在禁止在成员被转移到查询字符串的路由上使用默认参数值。但是,它似乎也会导致您用明确的路线描述的问题。

我在一起解决问题的拉请求,并添加一些测试以反映预期的行为。

+0

更新:拉取请求已完成并合并。 – 2013-04-04 22:32:10