Tengo una situación extraña y me preguntaba si alguien puede ayudar.
Tengo una DLL .NET que se llama desde una aplicación VB6. He ampliado esta DLL para interactuar con un sitio web de terceros. El tercero tiene un SDK que estoy usando dentro de mi archivo DLL. El SDK tiene una llamada para conectarse al sitio web que luego realiza la autenticación OAuth2 para obtener un token de acceso para futuras llamadas al sitio web.
Cuando se llama a la función 'autorizar' de DLL (que contiene la llamada a la función SDK Connect) desde mi arnés de prueba (también una aplicación .NET), entonces todo está bien y funciona exactamente como se esperaba.
Sin embargo, cuando se llama a la misma función de "autorización" de DLL desde la aplicación VB6, la función de conexión del SDK falla. La única información útil es que el error es un error 501.
Para aclararme las cosas, cambié mi DLL para realizar la autenticación mediante llamadas REST. Nuevamente, llamar a esto desde el arnés de prueba de .NET estuvo bien, pero llamar desde la aplicación VB6 resultó en un error. Después de la investigación, parecía que el error estaba relacionado con TLS. Forcé la función "autorizar" de DLL para usar TLS1.2, usando ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 y las llamadas REST luego funcionaron.
Entonces, por alguna razón, parece que al realizar las llamadas a la DLL desde VB6, las llamadas web desde la DLL utilizan una versión inferior de TLS. Alguien mas ha visto esto antes?
Encontré algunos artículos sobre la desactivación de TLS1.0 y 1.1, pero nada de esto parece haber funcionado. ¿Alguien tiene alguna idea?
Gracias de antemano
Encontré cuál es la solución una vez, así que en caso de que alguien más tropiece con esto en el futuro.
Al ejecutar una aplicación VB6 que hace referencia a una DLL .NET, parece que todavía debería tener un archivo .config para esa aplicación VB6 (por lo tanto, un archivo appname.exe.config ). Para mí, usé el archivo de configuración de mi DLL (dllname.dll.config), lo renombré y lo agregué a la carpeta en la que estaba el EXE y todo comenzó a funcionar.
Además, si está depurando desde el IDE de VB6, debe crear un archivo vb6.exe.config junto con el vb6.exe principal y también funcionará desde el depurador.