Загрузка файла IIS 8.5 вызывает 'NetworkError: 500 Внутренняя ошибка сервера

Я ужасно пытаюсь найти причину ошибки при загрузке файла (размер файла не имеет значения) через HTTP на веб-сервер Windows 2012 R2 Essentials (IIS 8.5).

Приложение работает безупречно в Windows 2003 (IIS 6). Он также отлично работает на моем компьютере под управлением Windows 7 под управлением IIS 7.5

Поскольку IIS Manager для IIS 7.5 очень похож на IIS 8.5, у меня не было особых проблем с настройкой моего веб-приложения ISAPI, но все, кроме загрузки файлов, работает нормально.

Сначала я проверил основные вещи:

  • Как и в предыдущих версиях IIS, я проверил разрешения для папки загрузки.
  • Я проверил Просмотр событий и ничего не вижу в своем веб-приложении.
  • Заголовки запросов, отправленные в версии IIS 7.5 и IIS 8.5, идентичны. Размещенные данные идентичны.
  • Установите максимальный размер сообщения.
  • Добавлены типы файлов в список разрешенных.

Другие вещи, которые я пробовал:

Когда большой файл загружается на веб-сервер, я вижу, что w3wp.exe (32-разрядный процесс) потребляет процессор при загрузке файла. Проблема в том, что ошибка возникает еще до того, как какой-либо код моего приложения получит возможность работать с загрузкой. Например:

// handle any HTTP POST
if (strcmp(spContext->GetRequestMethod(), "POST") == 0) {
    // what was posted?
    if (form == FILE_UPLOADED) {
        // A file has been uploaded.  Check it to make sure it is
        // not corrupt and do what I need to do with it.
        …
        // I then prepare a JSON response:
        m_HttpResponse.SetContentType("application/json; charset=UTF-8");
        …
        // Now send a reply to the client browser letting it know that the
        // file was either successfully / unsuccessfully handled
        …

Я предполагаю, что это должно быть проблема конфигурации IIS 8.5, так как эта проблема не возникает в IIS 7.5 или IIS 6.

Может кто-нибудь дать мне свои мысли о том, что может происходить? Спасибо!

ОБНОВИТЬ

Питер Хандорф предложил мне использовать функцию трассировки, поэтому я включил ее, и это "Сводка запроса":

Url
http://www.fileuploads.tst:80/FileUpload.srf 

App Pool
DefaultAppPool_classic 

Authentication
anonymous 

User from token
NT AUTHORITY\IUSR 

Activity ID
{8000000F-0001-F800-B63F-84710C7967BB} 

Site
8 

Process
4652 

Failure Reason
STATUS_CODE 

Trigger Status
500 

Final Status
500 

Time Taken
0 msec 

Предупреждение об ошибках и предупреждениях

Event
MODULE_SET_RESPONSE_ERROR_STATUS 

ModuleName
IsapiModule 

Notification
EXECUTE_REQUEST_HANDLER 

HttpStatus
500 

HttpReason
Internal Server Error 

HttpSubStatus
0 

ErrorCode
The operation completed successfully.
(0x0) 

ConfigExceptionInfo
this field is empty...nothing to display

1 ответ

После недели сумасшествия я наконец нашел корень проблемы, оказалось, что это жесткий диск. Он изредка издавал щелчки, но я подумал, что это не будет проблемой, так как я только оценивал Windows 2012.

В конце концов, Windows загрузилась правильно, и единственной очевидной проблемой был случайный сбой загрузки, но, как только сервер работал, казалось, что все работало нормально, за исключением функции загрузки файлов моего приложения.

Как только жесткий диск был заменен, проблема просто исчезла. Больше нет внутренней ошибки сервера при загрузке любого файла!

Другие вопросы по тегам