Friday, May 18, 2007

control activeX en .NET no funciona bajo https

keywords: .net user control, activex, ocx, IE7, IE, https, http, seguro

Justin y yo tuvimos una semana muy pesada peleandonos con unos controles ActiveX desarrollados en C# y .NET 2.0, asi que vamos a postear algunas de nuestras experiencias con los problemas y soluciones que encontramos (para que podamos recordarlas despues), la prima es sobre controles ActiveX corriendo bajo https.

Desarrollamos el control, todo funcionaba muy bien, uno de nuestros clientes queria ese control en un sitio https, asi que dijimos no hay problema... hasta que tratamos, y tratamos, y tratamos y nada funcionaba, el control simplemente no cargaba correctamente (si cargaba, pero no hacia lo que necesitabamos, esto era aun peor).

La solucion resulto ser algo muy simple (como normalmente es el caso); cuando incluyes un control, normalmente se hace asi:

<object id="someId" classid="SomeDll#Namespace.ClassName"></object>

Esa es la forma en la que lo encuentras en los ejemplos en internet, y funciona muy bien (una vez que pasas todas las demas barreras para hacerlo funcionar) bajo http, pero cuando corres ese mismo sitio bajo https, el control simplemente no funciona.

la solucion?

Cuando creas tu control, le asignas un identificador unico (guid)

[Guid("CAE67AEA-F489-4e52-956B-CCC774F40A3A")]
[ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(IControlEvents))] // --Expose events
[ComVisible(true)]
public partial class MyControl : UserControl...

mas o menos asi...
bien, para hacer que el control funcione en https, simplemente tendras que usar ese GUID, no el nombre de la clase, asi que escribiriamos el codigo html de la siguiente manera

<object id="someId" classid="clsid:CAE67AEA-F489-4e52-956B-CCC774F40A3A"></object>

listo, es todo lo que hay que hacer, espero que les hallamos evitado algunas horas de dolores de cabeza

salu2

1 comment:

Anonymous said...

Hola, muy buen dato, lo tendré presente. Saben donde encuentro información paso a paso para construir mi propio control ActiveX desarrollados en VB.NET 2.0?

gracias
Franco G.G.