Web API. Длина строки превышает значение, заданное для свойства maxJsonLength.

Я пытаюсь вернуть большой набор o json (около 2 МБ), но веб-api возвращает ошибку:

"Ошибка при сериализации или десериализации с использованием JSON JavaScriptSerializer. Длина строки превышает значение, заданное для свойства maxJsonLength". Я пробовал настроить свойство maxJsonLength в web.config, но безуспешно.

Я видел другие ответы в stackoverflow, но все это связано с обычным контроллером.NET MVC, а не с ApiController.

Можно обойти внутренний JavaScriptSerializer maxJsonLenght или сделать какой-то пользовательский формат JsonSerializerType?

0
10 нояб. '15 в 11:09
источник поделиться
3 ответа

В зависимости от того, насколько велика полезная нагрузка JSON, вам, возможно, придется передать ответ. См. Это сообщение в блоге. Короче говоря, это сообщение в блоге можно обобщить по приведенному ниже коду:

[HttpGet]
public HttpResponseMessage PushStreamContent()
{
    var response = Request.CreateResponse();

    response.Content = 
    new PushStreamContent((stream, content, context) =>
    {
        foreach (var staffMember in _staffMembers)
        {
            var serializer = new JsonSerializer();
            using (var writer = new StreamWriter(stream))
            {
                serializer.Serialize(writer, staffMember);
                stream.Flush();
            }
        }
    });

    return response;
}
+1
10 нояб. '15 в 11:52
источник

Спасибо @BMac за вашу помощь, вы ведете меня к решению, которое работает.

[HttpGet]
//ResponseType it for ApiDescription successfully generates the helper page with the right type since i'm returning a plain/text content
[ResponseType(typeof(YourType))]
public async Task<HttpResponseMessage> GetLargeJsonDataWithWebAPI()
{
    String url = "someUrl";
    String jsonData = EnvironmentUrlHelper.GetJsonResourseAsync<YourType>(url);


    var response = Request.CreateResponse();
    response.Content = new StringContent(JsonConvert.SerializeObject(rsp));

    return response;
}
0
10 нояб. '15 в 14:29
источник

Вы пытались установить параметры MaxJsonDeserializerMembers в web.config?

<appSettings>
      <add key="aspnet:MaxJsonDeserializerMembers" value="1000" />
    </appSettings>
0
10 нояб. '15 в 11:42
источник

Посмотрите другие вопросы по меткам или Задайте вопрос