次のルートが定義されたDtoがありました
[Route("/route/{Id}/{Status}")]
public class JustIdAndStatus : IReturn {
public long Id { get; set; }
public long Status { get; set; }
}
次に、次のようなものでサービスを呼び出します
localhost:9040 / route / 1/100
また
localhost:9040 / route / 0/100
そして、すべてがうまくいきます。
しかし、サービスクライアントの1つを使用すると、値のいずれかが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からServiceStack3.9.38から3.9.40に更新したときに気づきました。
この動作が正しいかどうかを知りたいので、ルートを間違った方法で使用しているか、これが問題であり、githubの問題追跡システムに送信できます。
また、ServiceStack.Commonsソースコードで見つけた基本的なものを使用してテストを行います
https://gist.github.com/anonymous/5216727
前もって感謝します!