我有一個ISAPI擴展DLL,它使用在XP Pro上運行的IIS 5.1中的Microsoft Visual Studio 2003以C++編寫。每當_ASSERTE觸發時,我只會在標題欄和中止/重試/忽略按鈕中得到一個空的消息框,並顯示'錯誤'。我沒有看到的是_ASSERTE宏中的任何表達式文本。我已經追蹤到運行時庫源代碼,並最終在crtmbox.c中看起來像是在調用一個動態加載的MessageBoxA()。 lpText(調試斷言失敗...)和lpCaption(Microsoft Visual C++調試庫)是有效的。ISAPI擴展中的空_ASSERTE對話框
return (*pfnMessageBoxA)(hWndParent, lpText, lpCaption, uType);
如果我在調試IIS進程,那麼重試按鈕就會進入調試器。如果我從一個由相同源構建的Windows可執行文件執行相同的代碼,那麼我會得到我期望的Assert消息框。
我確信我已經看到過這個工作。事實上,移動到Visual Studio 2003最初是因爲2003運行時庫正確地將MB_SERVICE_NOTIFICATION添加到MessageBox標誌,以便在調試服務時至少在控制檯上顯示結果消息框。
任何人有任何想法?
JF