Почему проверка модели работает по-разному на моем локальном vs на реальном сервере?

#c# #asp.net-mvc #razor #file-upload #umbraco

#c# #asp.net-mvc #razor #загрузка файла #umbraco

Вопрос:

У меня есть веб-сайт (основанный на Umbraco) с простой формой. Эта форма содержит поле для загрузки файла.

Моя модель обладает этим свойством:

     [MaxFileSize(5242880, ErrorMessage = "File to big. Max: {0} bytes")]
    public HttpPostedFileBase Upload1 { get; set; }
  

В моем контроллере у меня есть:

         if (!ModelState.IsValid) {
            Log(doLogging, "Invalid Form **************************");
            if (model.Upload1 != null) Log(doLogging, "Attachment1: "   model.Upload1.FileName   ", ("   model.Upload1.ContentLength   ")");
            return CurrentUmbracoPage();
        }
  

Когда я тестирую это на своем локальном компьютере, я загружаю файл PDF размером 82 КБ, и он работает нормально.
Но когда я тестирую это на реальном сервере, моя модель недействительна с ошибкой:

 File to big. Max: 5242880 bytes
  

И что еще более странно, в моем файле журнала написано:

 WebStart.Controllers.Tp1ContactFormController - Attachment1: Test.pdf, (83617)
  

Откуда берется это странное поведение? Он не проходит проверку, но может определить, что размер содержимого равен 83617 байт. Почему это работает локально, но не на сервере? Байты — это байты, верно? Я думаю, здесь нет проблем с региональными настройками.

Комментарии:

1.1) MaxFileSize является настраиваемым атрибутом. Итак, может быть, необходимо отладить код этого атрибута на сервере. 2) Проверьте параметры в файлах конфигурации (например, web.config). Возможно, каким-то образом это значение по умолчанию в коде было перезаписано параметрами в файлах конфигурации на сервере. Кстати, MaxFileSize атрибут обычно должен быть снабжен [Required] атрибутом.

2. Я подумал о пункте 2, но сообщение об ошибке использует заданный максимальный размер. Так что это странно, если внутри используется другое значение.