1

GET 経由で呼び出したい次の DTO があります。

    [Route("/documents")]
    public class Documents : IReturn<DocumentsResult>
    {
        public string[] IDs { get; set; }
    }

シンプルService

    public DocumentsResult Get(Documents doc)
    {
       //implementation not relevant
    }

メソッドを使って多数の ID で呼び出そうとするとJsonServiceClient.Get()、クエリ文字列が長すぎるために BadRequest が返されます。

IDs プロパティが FormData からバインドされていることを確認するにはどうすればよいですか?

4

1 に答える 1

2

GETリクエストはQueryString しか使用できないため、FormData はありません。ヒットしている制限は、おそらく queryStrings の IIS/ASP.NET 制限です (ServiceStack には明示的な使用制限はありません)。したがって、次のようにして、Web.config で GET 要求の制限を増やしてみることができます。

<system.web>
    <httpRuntime maxUrlLength="10999" maxQueryStringLength="2097151" />
    ...
</system.web>

それ以外の場合の解決策は、POSTを使用してリクエストがリクエスト本文を介して送信されるようにするか、GETを使用してリクエストを、デフォルトの制限である 2048 chars を超えないより管理しやすいチャンクにバッチ処理することです。

于 2013-10-25T18:19:49.493 に答える