3

次のルートが定義された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

前もって感謝します!

4

1 に答える 1

3

あなたが説明することは、プロパティがルートで具体的に参照されている場合に予想される動作である必要があることに同意します。

参照するコミットは、メンバーがクエリ文字列に委任されたルートでのデフォルトのパラメーター値の使用を抑制することを目的としています。ただし、明示的なルートで説明した問題の原因にもなっているようです。

この問題に対処し、予想される動作を反映するためにいくつかのテストを追加するために、プルリクエストをまとめています。

于 2013-03-27T21:33:17.287 に答える