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
Published 18 May 07 05:00 by Que quieres desarrollar hoy?
Filed under: , , ,

Comments

No Comments
Anonymous comments are disabled