Otra vez .Net y COM+

21/04/2004 - 23:03 por Roberto G. A. | Informe spam
En una pregunta anterior en la que tenía problemas al
registrar un esamblado en COM+ hice lo que me aconsejaron
en las respuestas recibidas, pero... :-(

Eliminé de la configuración:
de: Register for COM Interop = True







a: Register for COM Interop = False

pero al añadir manualmente el ensamblado desde la consola
de COM+ me sigue dando el mismo error.

la única manera de registrar dicho componente en com+ es:


regsvcs /fc Class1.dll





pero ocurren dos cosas curiosillas:
1.- El método no aparece en la consola COM+
2.- Al invocar el componente con un programita de pruebas
en la consola de COM+ no aparecen los atributos: Objects,
Activated, In Call, Call Time...

Adjunto el código fuente por si puede revelar algo:

Datos del ensamblado añadidos para COM+>>
-
using System.EnterpriseServices;

[assembly: ApplicationName("COMClass")]
[assembly: ApplicationActivation(ActivationOption.Server)]

Código>>
-
using System;
using System.EnterpriseServices;

namespace Class1
{
public class Class1 : ServicedComponent
{
public Class1()
{
}

public string GetName()
{
try
{

return "Roberto";
}
catch(Exception e)
{
throw(e);
}
}
}
}


Gracias a todos por las respuestas :-) sigo peleandome con
ello
Roberto G.A.

Preguntas similare

Leer las respuestas

#1 José Miguel Torres
22/04/2004 - 09:19 | Informe spam
Hola de nuevo roberto.

Si le añades al Assembly esta linea:

[assembly: CLSCompliant(true)]

la primera vez que se llame al componente se registrará el solo. Deja que
sea el quien se registre a ver que pasa.
Por cierto, en la consola que registras la .dll o el .tlb?


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es

"Roberto G. A." escribió en el mensaje
news:26eb01c427e4$1f0a4510$
En una pregunta anterior en la que tenía problemas al
registrar un esamblado en COM+ hice lo que me aconsejaron
en las respuestas recibidas, pero... :-(

Eliminé de la configuración:
de: Register for COM Interop = True
Mostrar la cita
a: Register for COM Interop = False

pero al añadir manualmente el ensamblado desde la consola
de COM+ me sigue dando el mismo error.

la única manera de registrar dicho componente en com+ es:
Mostrar la cita
pero ocurren dos cosas curiosillas:
1.- El método no aparece en la consola COM+
2.- Al invocar el componente con un programita de pruebas
en la consola de COM+ no aparecen los atributos: Objects,
Activated, In Call, Call Time...

Adjunto el código fuente por si puede revelar algo:

Datos del ensamblado añadidos para COM+>>
-
using System.EnterpriseServices;

[assembly: ApplicationName("COMClass")]
[assembly: ApplicationActivation(ActivationOption.Server)]

Código>>
-
using System;
using System.EnterpriseServices;

namespace Class1
{
public class Class1 : ServicedComponent
{
public Class1()
{
}

public string GetName()
{
try
{

return "Roberto";
}
catch(Exception e)
{
throw(e);
}
}
}
}


Gracias a todos por las respuestas :-) sigo peleandome con
ello
Roberto G.A.
#2 José Miguel Torres
22/04/2004 - 09:53 | Informe spam
En cuanto a el porque no aparecen los métodos tiene una explicación. En el
servicio de componentes se muestran los componentes como objetos COM. Los
desarrollados en .NET (codigo administrado) cuentan con la clave
InProcServer32 apuntando a mscoree.dll, fíjate y verás, mientras que los
objetos COM apuntan a sus dll. Si la clase administrada (.NET) no
implementa ninguna interfaz pública, los métodos de éstos no aparecen en el
catálogo de COM+ ( amenos que se emplee el atributo
ClassInterfaceAttribute), o sea que la configuración de servicio a nivel de
método no se puede guardar en el catálogo. Mi consejo es que implantes
interfaz si necesitas utilizar servicios COM+ a nivel de método (seguridad
por ejemplo),,


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es


"Roberto G. A." escribió en el mensaje
news:26eb01c427e4$1f0a4510$
En una pregunta anterior en la que tenía problemas al
registrar un esamblado en COM+ hice lo que me aconsejaron
en las respuestas recibidas, pero... :-(

Eliminé de la configuración:
de: Register for COM Interop = True
Mostrar la cita
a: Register for COM Interop = False

pero al añadir manualmente el ensamblado desde la consola
de COM+ me sigue dando el mismo error.

la única manera de registrar dicho componente en com+ es:
Mostrar la cita
pero ocurren dos cosas curiosillas:
1.- El método no aparece en la consola COM+
2.- Al invocar el componente con un programita de pruebas
en la consola de COM+ no aparecen los atributos: Objects,
Activated, In Call, Call Time...

Adjunto el código fuente por si puede revelar algo:

Datos del ensamblado añadidos para COM+>>
-
using System.EnterpriseServices;

[assembly: ApplicationName("COMClass")]
[assembly: ApplicationActivation(ActivationOption.Server)]

Código>>
-
using System;
using System.EnterpriseServices;

namespace Class1
{
public class Class1 : ServicedComponent
{
public Class1()
{
}

public string GetName()
{
try
{

return "Roberto";
}
catch(Exception e)
{
throw(e);
}
}
}
}


Gracias a todos por las respuestas :-) sigo peleandome con
ello
Roberto G.A.
#3 Roberto G. A.
22/04/2004 - 10:32 | Informe spam
El registro del ensamblado lo hago de la siguiente manera:
Mostrar la cita
He añadido la linea en el ensamblado pero sigue en sus
trece...

La clase funciona y todo, lo que ocuerre es que en la
consola de COM+ no consigo ver información de cada vez que
se ejecuta: Objects, Activated, In Call, Call Time... ni
información de los métodos. Lo cual me deja extrañado y no
sé si es por algo que estoy haciendo mal... :-(

Agradezco tu paciencia José Miguel, gracias.
Roberto G. A.

Mostrar la cita
el solo. Deja que
Mostrar la cita
escribió en el mensaje
Mostrar la cita
#4 José Miguel Torres
22/04/2004 - 13:12 | Informe spam
Lo de los métodos.. no te preocupes no haces nada mal:

En cuanto a el porque no aparecen los métodos tiene una explicación. En el
servicio de componentes se muestran los componentes como objetos COM. Los
desarrollados en .NET (codigo administrado) cuentan con la clave
InProcServer32 apuntando a mscoree.dll, fíjate y verás, mientras que los
objetos COM apuntan a sus dll. Si la clase administrada (.NET) no
implementa ninguna interfaz pública, los métodos de éstos no aparecen en el
catálogo de COM+ ( amenos que se emplee el atributo
ClassInterfaceAttribute), o sea que la configuración de servicio a nivel de
método no se puede guardar en el catálogo. Mi consejo es que implantes
interfaz si necesitas utilizar servicios COM+ a nivel de método (seguridad
por ejemplo),,



José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es

"Roberto G. A." escribió en el mensaje
news:29a901c42844$4f85ea40$
El registro del ensamblado lo hago de la siguiente manera:
Mostrar la cita
He añadido la linea en el ensamblado pero sigue en sus
trece...

La clase funciona y todo, lo que ocuerre es que en la
consola de COM+ no consigo ver información de cada vez que
se ejecuta: Objects, Activated, In Call, Call Time... ni
información de los métodos. Lo cual me deja extrañado y no
sé si es por algo que estoy haciendo mal... :-(

Agradezco tu paciencia José Miguel, gracias.
Roberto G. A.

Mostrar la cita
el solo. Deja que
Mostrar la cita
escribió en el mensaje
Mostrar la cita
#5 Roberto G.A.
22/04/2004 - 16:18 | Informe spam
Bueno, al final he conseguido todo menos que al ejecutar
el componente en COM+ se muestren en la consola
información del mismo: |Objects|Activated|Pooled|In Call...

Incluso he descargado algunos ejemplos en internet y
tienen el mismo problema... seguiré investigando.

Mil gracias...
Roberto G.A.


Mostrar la cita
explicación. En el
Mostrar la cita
objetos COM. Los
Mostrar la cita
la clave
Mostrar la cita
mientras que los
Mostrar la cita
(.NET) no
Mostrar la cita
no aparecen en el
Mostrar la cita
servicio a nivel de
Mostrar la cita
que implantes
Mostrar la cita
método (seguridad
Mostrar la cita
escribió en el mensaje
Mostrar la cita
Ads by Google
Search Busqueda sugerida