Problema con objeto COM

18/11/2004 - 09:04 por Pedro Gago | Informe spam
Hola a todos,

estoy usando un objeto COM desde un programa .Net. La cuestión, que ahora
explicaré, es que llega un momento en que me deja de funcionar.

Genero una aplicación Windows en .Net que usa el objeto COM y funciona
correctamente, tanto en mi máquina local como en un servidor que únicamente
tiene el .Net Framework.

Luego hago un servicio Windows que usa el objeto COM. Éste funciona bien en
mi máquina pero peta en un servidor que únicamente tiene el .Net Framework.
Hemos hecho la misma prueba en 4 equipos diferentes (2 con el entorno de
programación completo y 2 con el .Net Framework sólo) y curiosamente
obtenemos resultados diferentes (ambos con error) que son:

1) "System.Runtime.InteropServices.COMException (0x80040154): El objeto COM
con CLSID XXXX no es válido o no está registrado."
Curiosamente el CLSID que me dice es el del objeto COM en mi máquina, que no
está en el registro del servidor.
El servicio lo he instalado con un proyecto de aplicación, el cual genera en
el servidor (al instalarlo) un fichero interop.CalculoConceptos.dll, cuando
el original era CalculoConceptos.dll.

2) "Se ha producido el siguiente error : System.InvalidCastException: Error
de QueryInterface para la interfaz CalculoConceptos._clsCalculoConceptos.
at CalculoConceptos.clsCalculoConceptosClass.fUtilBDConectar(String&
strCommand, String& strIP, String& strNameSpace, Connection& AdoConn)
at Servicio_Interaccion.Service1.Timer1_Elapsed(Object sender,
ElapsedEventArgs e)"

Hemos probado ya muchas cosas: usar la herramienta tlbimp, usar late binding
y otras sin ningún resultado. ¿Alguien me puede ayudar?

Gracias

Pedro Gago

Preguntas similare

Leer las respuestas

#1 Pedro Gago
18/11/2004 - 09:21 | Informe spam
Hola de nuevo,

He hecho un pequeño avance. He copiado manualmente el objeto de VB6 al
servidor y la he registrado (cosa que no hace el instalador de .Net). De
esta forma parece que el objeto Interop funciona y conseguimos que en ambos
servidores nos de el mismo error:

"Se ha producido el siguiente error : System.InvalidCastException: Error
de QueryInterface para la interfaz CalculoConceptos._clsCalculoConceptos.
at CalculoConceptos.clsCalculoConceptosClass.fUtilBDConectar(String&
strCommand, String& strIP, String& strNameSpace, Connection& AdoConn)
at Servicio_Interaccion.Service1.Timer1_Elapsed(Object sender,
ElapsedEventArgs e)"

Ahora bien, sigo sin saber qué hacerle a este error.

Pedro Gago

"Pedro Gago" escribió en el mensaje
news:
Hola a todos,

estoy usando un objeto COM desde un programa .Net. La cuestión, que ahora
explicaré, es que llega un momento en que me deja de funcionar.

Genero una aplicación Windows en .Net que usa el objeto COM y funciona
correctamente, tanto en mi máquina local como en un servidor que


únicamente
tiene el .Net Framework.

Luego hago un servicio Windows que usa el objeto COM. Éste funciona bien


en
mi máquina pero peta en un servidor que únicamente tiene el .Net


Framework.
Hemos hecho la misma prueba en 4 equipos diferentes (2 con el entorno de
programación completo y 2 con el .Net Framework sólo) y curiosamente
obtenemos resultados diferentes (ambos con error) que son:

1) "System.Runtime.InteropServices.COMException (0x80040154): El objeto


COM
con CLSID XXXX no es válido o no está registrado."
Curiosamente el CLSID que me dice es el del objeto COM en mi máquina, que


no
está en el registro del servidor.
El servicio lo he instalado con un proyecto de aplicación, el cual genera


en
el servidor (al instalarlo) un fichero interop.CalculoConceptos.dll,


cuando
el original era CalculoConceptos.dll.

2) "Se ha producido el siguiente error : System.InvalidCastException:


Error
de QueryInterface para la interfaz CalculoConceptos._clsCalculoConceptos.
at CalculoConceptos.clsCalculoConceptosClass.fUtilBDConectar(String&
strCommand, String& strIP, String& strNameSpace, Connection& AdoConn)
at Servicio_Interaccion.Service1.Timer1_Elapsed(Object sender,
ElapsedEventArgs e)"

Hemos probado ya muchas cosas: usar la herramienta tlbimp, usar late


binding
y otras sin ningún resultado. ¿Alguien me puede ayudar?

Gracias

Pedro Gago


Respuesta Responder a este mensaje
#2 fernando
18/11/2004 - 09:54 | Informe spam
Hola , tienes una forma de registrar componentes desde el instalador de
.net. Los problemas que tienes se deben a los objetos com.En los proyectos
de instalalcion tienes una opcion que es "Editor del registro"(esta ubicado
arriba del explorador de soluciones), este registro te permite editar el
registro de la maquina destino. Bueno espero haberte ayudado en algo

Fernando-Almería


"Pedro Gago" escribió en el mensaje
news:
Hola a todos,

estoy usando un objeto COM desde un programa .Net. La cuestión, que ahora
explicaré, es que llega un momento en que me deja de funcionar.

Genero una aplicación Windows en .Net que usa el objeto COM y funciona
correctamente, tanto en mi máquina local como en un servidor que


únicamente
tiene el .Net Framework.

Luego hago un servicio Windows que usa el objeto COM. Éste funciona bien


en
mi máquina pero peta en un servidor que únicamente tiene el .Net


Framework.
Hemos hecho la misma prueba en 4 equipos diferentes (2 con el entorno de
programación completo y 2 con el .Net Framework sólo) y curiosamente
obtenemos resultados diferentes (ambos con error) que son:

1) "System.Runtime.InteropServices.COMException (0x80040154): El objeto


COM
con CLSID XXXX no es válido o no está registrado."
Curiosamente el CLSID que me dice es el del objeto COM en mi máquina, que


no
está en el registro del servidor.
El servicio lo he instalado con un proyecto de aplicación, el cual genera


en
el servidor (al instalarlo) un fichero interop.CalculoConceptos.dll,


cuando
el original era CalculoConceptos.dll.

2) "Se ha producido el siguiente error : System.InvalidCastException:


Error
de QueryInterface para la interfaz CalculoConceptos._clsCalculoConceptos.
at CalculoConceptos.clsCalculoConceptosClass.fUtilBDConectar(String&
strCommand, String& strIP, String& strNameSpace, Connection& AdoConn)
at Servicio_Interaccion.Service1.Timer1_Elapsed(Object sender,
ElapsedEventArgs e)"

Hemos probado ya muchas cosas: usar la herramienta tlbimp, usar late


binding
y otras sin ningún resultado. ¿Alguien me puede ayudar?

Gracias

Pedro Gago


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida