我有一个定义了以下路线的 Dto
[Route("/route/{Id}/{Status}")]
public class JustIdAndStatus : IReturn {
public long Id { get; set; }
public long Status { get; set; }
}
然后我用类似的东西调用服务
本地主机:9040/route/1/100
或者
本地主机:9040/route/0/100
一切顺利。
但是当我使用其中一个服务客户端时,如果任何值为 0(long 的默认值),则会出现异常。
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上跟踪了此提交的问题
我注意到当我从 nuget 从 ServiceStack 3.9.38 更新到 3.9.40 时。
我想知道这种行为是否正确,所以我以错误的方式使用了路由,或者这可能是一个问题,可以提交给 github 上的问题跟踪器。
我还使用在 ServiceStack.Commons 源代码中找到的基本测试进行了测试
https://gist.github.com/anonymous/5216727
提前致谢!