/ / ¿Cómo uso .Net Remoting a través de un proxy web? - c #, .net, wcf, proxy, comunicación remota

¿Cómo uso .Net Remoting a través de un proxy web? - c #, .net, wcf, proxy, comunicación remota

Una aplicación que estoy escribiendo necesita usar .Net Remoting (soy consciente de que WCF es lo "nuevo", pero desafortunadamente no es una opción disponible para nosotros en este momento).

De todos modos, todo funciona bien si no intentoUsa la aplicación a través de un proxy. Sin embargo, la aplicación debe poder funcionar a través de servidores web proxy. Configuré un HttpChannel y configuré las propiedades "proxyName" y "proxyPort" en sus valores correctos. Esto permite que el canal use el servidor proxy sin problemas.

Tengo los siguientes problemas:

1: Si el servidor proxy requiere autenticación, parece que no hay manera de configurar las credenciales que el canal debe usar para autenticar con el proxy. He probado tanto la propiedad "credenciales" como las propiedades "nombre de usuario" y "contraseña", pero no parece funcionar. Por lo tanto, el resultado final en un caso en el que el servidor proxy requiere autenticación, y solo devuelve un error de autenticación cada vez que se llama al método remoto.

2: Parece que no puedo conseguir que HttpChannel use el proxy web del sistema predeterminado. Si Internet Explorer está configurado para usar un proxy, debería poder usar WebRequest.GetSystemWebProxy () para obtenerlo. Sin embargo, esto devuelve un IWebProxy, y no puedo extraer el host y el puerto de esto. Si alguien sabe cómo hacerlo, se lo agradecería enormemente.

Lo que es frustrante es que si das un paso adelanteEl código utiliza Visual Studio y examina la clase HttpChannel, hay un objeto WebProxy. ¡La vida sería mucho más fácil si proporcionaran acceso a eso!

Básicamente, lo que estoy preguntando es cómo demonios hago.obtener un HttpChannel para usar un proxy web correctamente, teniendo en cuenta que necesito poder usar un proxy que requiera autenticación y la capacidad de detectar automáticamente la configuración del proxy de Internet Explorer. ¿Hay una forma más sencilla de crear una instancia del canal para que pueda pasarle un objeto proxy como parámetro?

¡Cualquier ayuda es muy apreciada!

Respuestas

3 para la respuesta № 1

He encontrado la solución a este problema.(desafortunadamente, perdí la dirección del blog que me llevó a esto; si puedo encontrarla nuevamente, le daré el debido crédito), y funciona perfectamente. Para cualquiera que esté interesado, agregue el siguiente código:

    private static void SetChannelProxy(HttpClientChannel channel, IWebProxy proxy)
{
FieldInfo proxyObjectFieldInfo = typeof(HttpClientChannel).GetField("_proxyObject", BindingFlags.Instance | BindingFlags.NonPublic);

proxyObjectFieldInfo.SetValue(channel, proxy);
}

Primero debe configurar su objeto proxy con las credenciales que desea usar y luego llamar a este método con el canal que desea usar con el proxy.