visual studio sitio servidor publicar net error denegado asp aplicación acceso c++ exception mfc activation-context-api

c++ - studio - CreateEx causa excepción no controlada El contexto de activación que se desactiva no es el último activado.



error de servidor en la aplicación ''/'' acceso denegado (5)

itsAnalysisDataTable.CreateEx( WS_EX_CLIENTEDGE, AfxRegisterWndClass( CS_DBLCLKS, LoadCursor( NULL, IDC_ARROW ), (HBRUSH)::GetStockObject( NULL_BRUSH ), NULL ), "AnalysiysTable", WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, dialogItemRect, this, IDC_ANALYSIS_DATA_TABLE );

Esta línea me ha costado dos días de esfuerzo sin solución. itsAnalysisDataTable es un control de Windows personalizado que tiene CWnd como su gran abuela. El control se ha utilizado con éxito en otros pasos sin problemas en nuestro código. esto es un CPropertyPage.

El problema que tengo es que la línea causa (y lo hace cada vez) una excepción no controlada en 0x76f7fd5c en MyProduct (x64) .exe: 0xC015000F: El contexto de activación que se desactiva no es el último activado.

La excepción también ocurre en 32 bits. Estoy en Windows 7 x64, VS 2008.

Lo que ya he intentado:

  1. Habilitando break on win32 excepciones en el depurador. No se produce ninguna excepción (excepto excepciones de primera oportunidad de las cuales hay mucho en nuestro código y no tienen efecto)
  2. Recompilando todo el proyecto
  3. Depuración del controlador OnCreate para el control de excepciones.

Pila de llamadas:

ntdll.dll!0000000076f7fd5c() [Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll] kernel32.dll!0000000076df42d3() mfc90d.dll!AfxDeactivateActCtx(unsigned long dwFlags=0, unsigned __int64 ulCookie=2077018657900210161) Line 260 + 0x19 bytes C++

Observaciones:

  1. Si omito el indicador WS_CHILD, la excepción no ocurre, ¡pero OnCreate tampoco se llama en el control!
  2. Si ignoro la excepción y continúo, la aplicación funciona bien, el control también funciona bien.
  3. Llamar a AfxSetAmbientActCtx (FALSE) durante la aplicación init suprime la excepción. Pero creo que esto es un truco, a menos que pueda justificarlo.


Después de tocar muchos de estos, he encontrado que la forma más simple de rastrear el problema raíz es ir a Depurar -> Excepciones y habilitar TODAS las excepciones lanzadas. Luego encontrarás que hay otra excepción que está disparando, que está atrapado silenciosamente, PERO estropea el contexto de activación. Una vez que corrija la primera excepción, la excepción de contexto de activación no ocurrirá.


Resulta que el mío se debió a un miembro no inicializado en la clase de control ofensiva. La inicialización de la variable en el constructor solucionó el problema. Así que no tuve que recurrir a AfxSetAmbientActCtx (FALSE)


Tenía el mismo problema.

En mi caso, estaba leyendo un archivo de una ruta y accidentalmente borré ese archivo. Devolver el archivo resolvió el problema.


Tuve algunos bloqueos misteriosos en un programa que alojó IE junto con varios controles ActiveX.

Resulta que una división anterior por cero (por uno de los controles AX) finalmente causó esta excepción y una Infracción de acceso posterior también.