Загрузка файлов с помощью классического ASP. Размер файла не может превышать 120 КБ?

Это сводит меня с ума. Недавно мы перешли на сервис Amazon EC2, и теперь загрузка файлов (с использованием Motobit Huge ASP Upload) в нашем приложении не выполняется для любых файлов размером более 120 КБ. Я знаю, что ограничение по умолчанию составляет 200 КБ, но оно не работает для всего, что больше 120, с номером ошибки -2147024893 (0x80070003) без описания/деталей. Я не могу найти ничего в средстве просмотра событий или журналах IIS, чтобы указать мне какое-либо направление.

Я действительно зашел в IIS в свойствах ASP для рассматриваемого сайта и изменил максимальный предел тела запрашивающего объекта с 200 000 до 400 000, и это не имело никакого значения. Я даже попробовал iisreset, а также перезагрузил сервер после внесения изменений, просто чтобы убедиться, что они применяются из-за безнадежного отчаяния.

Я пробовал множество разных файлов и размеров файлов. Максимум, что мне удалось загрузить, это файл размером 120 КБ. Это не проблема кода, так как этот же код работает на моем локальном компьютере (IIS 7) без проблем и был просто скопирован с нашего старого сервера как есть.

ASP Limits Properties РЕДАКТИРОВАТЬ: я также безрезультатно пробовал следующее:

установите для параметров фильтрации запросов Максимально допустимую длину содержимого значение 30000000 (30 Мб).

Вручную отредактировал файл web.config и добавил requestLimits maxAllowedContentLength="15728640" и httpRuntime maxRequestLength="2147483647"


person Digital Fusion    schedule 30.03.2016    source источник
comment
Пробовали ли вы использовать другой компонент загрузки, если есть еще один (или несколько) для тестирования? Просто чтобы убедиться, что это действительно не проблема кода.   -  person statosdotcom    schedule 31.03.2016
comment
у меня еще нет. Это похоже на проблему с IIS 8.5 или другой конфигурацией. Тот же код работает локально на IIS 7 и отлично работает на старом сервере. У нас есть около дюжины мест, где вы можете загружать файлы через форму, и все они терпят неудачу на новых серверах каждый раз, когда есть файл или комбинация файлов, размер которых превышает 126 КБ. Вы можете загрузить файл или комбинацию из 125 файлов, и все работает отлично.   -  person Digital Fusion    schedule 31.03.2016


Ответы (1)


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

Этот компонент имеет максимальную настройку памяти 128 КБ. Любые файлы большего размера не сохраняются в памяти, а сохраняются во временной папке. Временная папка по умолчанию — C:\Windows\Temp.

Виновником была настройка пула приложений в дополнительных настройках. Для параметра «Загрузить профиль пользователя» установлено значение true. В результате компонент пытался использовать временный путь в C:\Users, что не удалось. Есть 3 решения:

  1. Установить Загрузить профиль пользователя = False
  2. Назначьте временную папку в коде (Form.TempPath = "")
  3. Создайте папку в C:\Users (используйте форму response.write.CheckRequirements)

Для нашего случая №1 был идеальным решением. # 2 потребовал бы редактирования более 100 файлов, а # 3 был бы нужен только в том случае, если вам нужно, чтобы # 1 был установлен в true.

person Digital Fusion    schedule 01.04.2016