martes, 27 de enero de 2009

asp.net, asp 6.0 y los objetos COM+

Esta entrada es bien técnica.

En mi trabajo, una de mis primeros contactos con .NET fue con la versión 2003 para una web. El caso es que era imperativo utilizar ciertos objetos COM+ que ya estaban creados, para agilizar el paso de ASP 6.0 a ASP.NET

En el entorno de desarrollo todo funcionaba a las mil maravillas, pero el problema fue al pasar al entorno de producción, dando un error del tipo (si le llamamos xClase al objeto)
Se ha generado una excepción no controlada durante la ejecución de la solicitud Web actual. La información sobre el origen y la ubicación de la excepción pueden identificarse utilizando la excepción del seguimiento de la pila siguiente.

System.InvalidCastException: Error de QueryInterface para la interfaz xClase._xProceso
El caso es que tanto en el entorno de desarrollo como en el entorno de producción teníamos exactamente las mismas instalaciones (windows 2003, ASP.NET, etc...) excepto una cosa... El Visual Studio 6, que estaba instalado en desarrollo pero no en producción.

Al desinstalar el Visual Studio 6 de la máquina de desarrollo, el problema se reproducía en este entorno. Así que era "algo" que se instalaba con el VS6.

Evidentemente, no ibamos a instalar todo el VS6 en el entorno de producción (era la última opción si no conseguía hacerlo funcionar). Así que me dispuse a comprobar TODAS las líneas que introduce la instalación del VS6 en el registro.

Tras 3 días de búsqueda, localicé estas entradas:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{D97A6DA0-A85C-11CF-83AE-00A0C90C2BD8}\2.0]
@="Microsoft Active Server Pages Object Library"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{D97A6DA0-A85C-11CF-83AE-00A0C90C2BD8}\2.0\0]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{D97A6DA0-A85C-11CF-83AE-00A0C90C2BD8}\2.0\0\win32]
@="c:\\ASP.TLB"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{D97A6DA0-A85C-11CF-83AE-00A0C90C2BD8}\2.0\FLAGS]
@="0"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{D97A6DA0-A85C-11CF-83AE-00A0C90C2BD8}\2.0\HELPDIR]
@="c:\\"

[HKEY_CLASSES_ROOT\TypeLib\{D97A6DA0-A85C-11CF-83AE-00A0C90C2BD8}\2.0]
@="Microsoft Active Server Pages Object Library"

[HKEY_CLASSES_ROOT\TypeLib\{D97A6DA0-A85C-11CF-83AE-00A0C90C2BD8}\2.0\0]

[HKEY_CLASSES_ROOT\TypeLib\{D97A6DA0-A85C-11CF-83AE-00A0C90C2BD8}\2.0\0\win32]
@="c:\\ASP.TLB"

[HKEY_CLASSES_ROOT\TypeLib\{D97A6DA0-A85C-11CF-83AE-00A0C90C2BD8}\2.0\FLAGS]
@="0"

[HKEY_CLASSES_ROOT\TypeLib\{D97A6DA0-A85C-11CF-83AE-00A0C90C2BD8}\2.0\HELPDIR]
@="c:\\"
Tras introducir estas líneas en el registro del sistema de producción, apuntando al archivo c:\ASP.TLB versión 2.0 que se incluye en el VS6 (copiado del servidor de desarrollo tras reinstalar el VS6), todo funcionó a las mil maravillas.

Si me aclaro con blogger, os pondré el enlace al archivo .REG para introducir las claves sin tener que teclearlas. El archivo ASP.TLB, como es propiedad de Microsoft, tendreis que buscarlo por otro lado, pero puedo deciros que VS6 lo instala por defecto en
C:\Archivos de programa\Microsoft Visual Studio\COMMON\IDE\IDE98\

1 comentario:

  1. Claro, porque si no farcias el carordias, no remueldes las leporcias...

    ResponderEliminar