У меня есть библиотека расширения ISAPI, написанная на C ++ с использованием Microsoft Visual Studio 2003, работающая в IIS 5.1 на XP Pro. Всякий раз, когда запускается _ASSERTE, я просто получаю пустое окно сообщения с ошибкой в строке заголовка и кнопками Abort / Retry / Ignore. Чего я не вижу, так это какого-либо текста выражения из макроса _ASSERTE. Я проследил в исходный код библиотеки времени выполнения, и я оказался в crtmbox.c в строке, которая выглядит так, как будто она вызывает динамически загруженную MessageBoxA (). Допустимы lpText (Ошибка отладки ...) и lpCaption (Библиотека отладки Microsoft Visual C ++).
return (*pfnMessageBoxA)(hWndParent, lpText, lpCaption, uType);
Если я отлаживаю процесс IIS, кнопка «Повторить» ломается в отладчике. Если я выполню тот же код из исполняемого файла Windows, созданного из того же источника, я получу окно сообщения Assert, которое я ожидаю.
Я уверен, что видел, как это работало в прошлом. Фактически, переход к Visual Studio 2003 изначально помог, поскольку библиотека времени выполнения 2003 правильно добавляет MB_SERVICE_NOTIFICATION к флагам MessageBox, так что по крайней мере получающееся окно сообщения отображается на консоли при отладке службы.
У кого-нибудь есть идеи?
JF