Почему загрузка файла не выполняется в ASP.Net MVC? - PullRequest
0 голосов
/ 02 февраля 2010

Я загружаю файлы, используя HttpWebRequest, в приложение ASP.Net MVC, но по какой-то неизвестной мне причине не удается выполнить последовательную загрузку.

Я знаю, что файл хорош, так как если вы попробуете достаточно раз, он в конечном итоге загрузится и его можно будет просмотреть на сервере просто отлично. Когда происходит сбой, ни сервер, ни клиент не сообщают о каких-либо ошибках, непосредственно связанных с загрузкой, загрузка просто останавливается на полпути в произвольном месте и времени, и мой метод действия MVC вызывается без загрузки файла (Request.Files.Count == 0).

Это кажется только проблемой в нашей производственной среде по сравнению с DSL. Среда тестирования и разработки работает нормально, а производственная среда отлично работает в офисе (очень быстрое соединение с серверами), но не работает при запуске из дома через DSL.

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

[Authorize]
[AcceptVerbs(HttpVerbs.Put | HttpVerbs.Post)]
[ValidateInput(false)]
public int UploadScene(int sceneID, int tourID, string name, int number, PhotoType photoType)
{
    SceneInfo scene;
    if (Request.Files.Count < 1) throw new InvalidOperationException("Image file not uploaded.");
    // process file...
}

Кажется, что это, вероятно, конфигурация, но я не могу понять, что это может быть. Мы работаем в кластере (у нас есть 4 веб-сервера), поэтому он может иметь к этому какое-то отношение, но я тестирую на одном сервере (я могу изолировать машину по имени и убедиться, что она обрабатывает мои запросы). Я также убедился, что он работает в своем собственном пуле приложений. Что еще я должен проверить?

Мы используем IIS6 и .Net 3.5 на серверах.

Ответы [ 2 ]

1 голос
/ 03 февраля 2010

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

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

1 голос
/ 02 февраля 2010

Вы пытались обернуть вашу форму в правильный тег ?

<% using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { @enctype = "multipart/form-data" })) { %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...