ASP.NET / IIS6: Попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая память повреждена - PullRequest
0 голосов
/ 16 декабря 2009

Я получаю следующую ошибку на своих производственных серверах:

Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

Это происходит не всегда, но, похоже, чаще всего происходит во время большого трафика.

Ошибка происходит в пользовательском IHttpHandler.

Трассировка стека не дает достаточной информации о том, что на самом деле происходит, когда происходит исключение - все, что происходит в указанной области, - это запись в ответ с использованием Response.Write.

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

Я также просмотрел десятки других вопросов SO / результатов поиска Google с этой ошибкой, но ни одно из исправлений, похоже, не имеет отношения к этой ситуации.

Редактировать: Я ничего не делаю напрямую с неуправляемым / небезопасным кодом. Тем не менее, я использую MEF, и я не уверен, что это так.

Ответы [ 4 ]

0 голосов
/ 16 декабря 2009

Скорее всего, это связано с тем, что ASP.NET является многопоточным, и в IHttpHandler вы используете не потокобезопасный код.

Вероятно, один из них:

  • COM-объекты (например, Excel, Word автоматизация или аналогичные)
  • Собственный Win32 API (P / Invoke)

Так что вам нужно предоставить больше информации о том, что именно вы делаете в обработчике.

0 голосов
/ 16 декабря 2009

Управляется ли ваш пользовательский обработчик? Это сообщение обычно указывает, что проблема в неуправляемом коде - поврежденные указатели и тому подобное.

0 голосов
/ 16 декабря 2009

Я видел, как это происходило, когда пул приложений перезагружался при большой нагрузке, а используемая память уже была очищена и освобождена, но ссылка на нее все еще существует. IHTTPHandler что-то делает с P / Invoke или неуправляемым / небезопасным кодом?

0 голосов
/ 16 декабря 2009

Нет, это не проблема с ошибкой сервера. Это явно проблема программирования.

Что на самом деле делает этот код IHttpHandler? Взаимодействует ли он с каким-либо неуправляемым кодом?

Кстати, сообщение об исключении означает то, что было сказано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...