Estoy tratando de construir un proxy que sirva las solicitudes a un sitio interno (ocultando el origen) pero al mismo tiempo inspeccionar los paquetes y publicar asincrónicamente -procesarlos.Enrutamiento de solicitud de aplicación IIS7 (proxy inverso arr) combinado con módulo administrado - tiempo de espera
E.g. digamos que todas las llamadas SOAP a http://www.foo.com irán a http://192.168.1.1, y al mismo tiempo se almacenarán en una base de datos para su posterior análisis. El servidor interno es una caja negra, por lo que cambiar algo no está dentro del alcance de esta pregunta.
De todos modos, he configurado ARR, con proxy inverso, hice el filtro de reescritura de URL con comodines, todo funciona perfectamente. Luego, traté de agregar un HttpModule administrado escrito en C# y enganchado a Application_BeginRequest y Application_EndRequest. Puedo acceder a los encabezados de solicitud, encabezados de respuesta al final (el grupo de aplicaciones está en modo integrado) e incluso puedo leer el contenido de respuesta de la salida mediante la configuración de un filtro en Response.Filter, que almacena en caché todas las escrituras en una secuencia de memoria adicional.
El problema es que el momento trato de leer (en el interior del módulo de controlador BeginRequest) el flujo de entrada de la solicitud, ARR se mantiene un tiempo y lanza una
Error HTTP 502.3 - Puerta de enlace incorrecta La operación el tiempo de espera Handler ApplicationRequestRoutingHandler Código de error 0x80072ee2
Por lo tanto, el tiempo de espera.
Mirando con solicitudes con error rastreo veo:
MODULE_SET_RESPONSE_ERROR_STATUS Advertencia ModuleName = "ApplicationRequestRouting", Notificación = "EXECUTE_REQUEST_HANDLER", httpStatus = "502", HttpReason = "Bad Gateway", HttpSubStatus = "3", ErrorCode = "2147954402", ConfigExceptionInfo = "" SET_RESPONSE_ERROR_DESCRIPTION Advertencia ErrorDescription = "La operación timed out"
Ahora cualquier puestos similares en la red no ayudó a que esto no es un error de tiempo de espera (configuración de proxy tiene 120 segundos, una página de preguntas en menos de 100 ms), y el momento de comentar el código del manejador que intenta leer datos FORM o datos InputStream, todo funciona como un amuleto.
Incluso si configuro la posición de la ruta de entrada en 0 después de leerla, aún obtengo tiempos de espera. Si leo la secuencia de entrada en EndRequest, obtiene 0 bytes, incluso si se trata de una solicitud POST. (lo cual es claramente incorrecto)
¿ARR tiene un error en el hecho de que trato de leer un flujo de entrada antes de que intente redirigirlo?
cosas usadas: Windows Server 2008 R2 IIS 7.5 ARR v2 .Net Framework 3.5 módulo
ideas? Gracias /Cosmin
¡Estoy en .NET 4.0 y esto me sirvió de algo! Thanx robinet –