#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, но сообщение об ошибке использует заданный максимальный размер. Так что это странно, если внутри используется другое значение.