1

411 Требуемая длина В запросе не указана длина его содержимого, которое требуется запрашиваемому ресурсу.WebAPI и код состояния 411 «Требуемая длина»

У меня есть следующий код:

[HttpPost] 
    [Route("UploadFileAsync/{RequestID}")] 
    public async Task<HttpResponseMessage> UploadFileAsync(int RequestID) 
    { 
     SetUser(); 
     long maxAllowedFileSize = 9999999; 


     long? contentLenght = Request.Content.Headers.ContentLength; 

     if (!contentLenght.HasValue || contentLenght.Value > maxAllowedFileSize) 
     { 
      return Request.CreateErrorResponse(HttpStatusCode.LengthRequired, "Please set content lenght and file size should be less than 10 Mb"); 
     } 

Он работает и вернуть код состояния 411, когда размер запроса больше, чем 9999999.

Но я хотел бы проверить его перед загрузкой всех запрос на сервер (как я понимаю, смысл этого кода статуса 411 для предотвращения загрузки больших файлов, если сервер не может его обработать). Как я могу отклонить запрос и отправить код статуса 411 перед отправкой всего запроса на сервер?

ответ

1

Если вы хотите проверить размер перед отправкой запроса в веб-API, вам необходимо сделать это на уровне веб-API-клиента.
Однако, если вы хотите выполнить проверку до того, как действие в вашем веб-контроллере api будет выполнено, вы можете использовать Action Filters. Как правило, выполняются следующие шаги.

  • Создание настраиваемого фильтра действий для веб-API путем присвоения класса ActionFilterAttribute.
  • Переопределить метод OnActionExecuting и написать код для проверки длины содержимого и возврата соответствующего кода ошибки в определение метода.
  • Зарегистрируйте пользовательский фильтр в файле WebApiConfig.
  • Украсьте действие, для которого вы хотите применить этот фильтр с обычаем атрибут

this Обратитесь к ссылке на шаг за шагом реализации.

+0

: «Зарегистрируйте пользовательский фильтр в файле WebApiConfig». ИЛИ «Украсить действие, для которого вы хотите применить этот фильтр, с вашим настраиваемым атрибутом» :) –

+0

Правильно. Когда вы добавляете настраиваемый фильтр в файл WebApiConfig, фильтр применяется ко всем контроллерам в веб-интерфейсе. Чтобы применить его к выборочным действиям внутри контроллера, украсьте действие с помощью атрибута настраиваемого фильтра. –

 Смежные вопросы

  • Нет связанных вопросов^_^