Подтвердить что ты не робот

Как изменить установленные по умолчанию параметры размера ответа для приложения Web API?

У меня есть метод Web API, который возвращает список событий:

public HttpResponseMessage GetEvents()
{
...
}

My Service поддерживает как ответы Xml, так и JSON с использованием DataContractSerializer (для xml) и DataContractJsonSerializer (для JSON).

Размер ответа может составлять 30 МБ.

Что по умолчанию разрешал размер ответа в веб-API ASP.NET, размещенный в IIS?

Как изменить настройки по умолчанию?

Какая наилучшая практика при возвращении таких больших данных (хотя это не так уж и много)?

Должен ли я отменить ответ?

Кроме того, мы можем получить один запрос в секунду.

Спасибо

4b9b3361

Ответ 1

Я не уверен в ваших проблемах. Потому что Response не ограничивают размер. Мы можем ограничить размер ответа, добавив в заголовок ответа еще один параметр Content-Length. Поэтому я предполагаю, что у вас возникнут две проблемы:

1. Запрос получил ограничение: Чтобы разрешить это, вы должны увеличить размер запроса, чтобы он мог получать ответ большого размера. Чтобы увеличить размер запроса, введите web.config, как показано ниже:

<system.web>
<httpRuntime maxRequestLength="2147483647" />

2. Вы получили размер буфера ответа - исключение ограничения:

Пожалуйста, следуйте ссылка из MSDN.

EDIT:

Что разрешено по умолчанию для размера ответа в ASP.NET Web API IIS?

Размер ответа будет автоматически получать размер по размеру сообщения, которое мы помещаем в него. И это имеет ограничение относительно размера ответа. HttpReponseMessage на самом деле является ответом, аналогичным тому, что я опубликовал выше.

Какая лучшая практика в возвращении таких больших данных (хотя это не что большой)?

Вы должны взять ссылку . Лучшие методы обработки данных - это преобразование в двоичные данные и перенос их на многие мелкие части.

Должен ли я отменить ответ?

Зависит от вашего контекста. IIS 7.0 уже позволяет настроить zip-ответ, но позаботьтесь о своем коде на клиенте, который уже поддерживает zip-ответ или нет.

Ответ 2

попробуйте этот код в вашем web.config он решил мою проблему

    <configuration> 
       <system.web.extensions>
           <scripting>
               <webServices>
                   <jsonSerialization maxJsonLength="50000000"/>
               </webServices>
           </scripting>
       </system.web.extensions>
    </configuration>