Tengo una aplicación Silverlight (v3) que usa WebRequest para realizar una solicitud HTTP POST a una página web en el mismo sitio web que la aplicación Silverlight. Esta solicitud HTTP devuelve un 302 (una redirección) a otra página en el mismo sitio web, que se supone que debe seguir HttpWebRequest (according to the documentation).HttpWebRequest devuelve 404s para 302 solo en Internet Explorer
No hay nada particularmente especial sobre el código que hace la solicitud (que utiliza la pila HTTP del navegador, que no está configurado para utilizar el suplente incorporado pila HTTP Silverlight):
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(String.Format("{0}?name={1}&size={2}", _UploadUrl, Uri.EscapeUriString(Name), TotalBytes));
request.Method = "POST";
Todo esto funciona bien en Firefox y Chrome; Silverlight hace la petición HTTP POST, recibe una respuesta 302 y automáticamente hace una petición HTTP GET de la URL de redirección especificado y devuelve que a mí (Lo sé porque yo solía Fiddler para ver las peticiones HTTP pasando). Sin embargo, en Internet Explorer (v8), Silverlight hace la petición HTTP POST y luego lanza un WebException con un código de error 404!
Utilizando Fiddler, puedo ver que Silverlight/Internet Explorer devolvió con éxito el código de estado 302 para la solicitud, y supongo que el código de estado 404 (y la WebException asociada) que obtengo en Silverlight se debe a que saber que las solicitudes HTTP que se realizan a través de la pila del navegador solo pueden devolver 200 o 404 debido a limitaciones. La verdadera pregunta es ¿por qué Internet Explorer no sigue a través de la redirección al igual que los otros navegadores?
¡Gracias de antemano por cualquier ayuda!
EDIT: yo preferiría no utilizar la pila de cliente HTTP Silverlight debido a mis solicitudes emitidas por el conocimiento que no incluyen las galletas que son una parte de la sesión del navegador, incluyendo críticamente la cookie de autenticación de ASP.NET que me deben adjuntarse a las solicitudes HTTP que realiza el control de Silverlight.
EDIT 2: He descubierto que Internet Explorer solo muestra este comportamiento cuando realiza una solicitud POST. Una solicitud GET redirecciona con éxito. Esto parece un comportamiento bastante malo teniendo en cuenta cuántos sitios web ahora hacen cosas en el estilo Post-Redirect-Get.
He creado un simple demo VS2008 solution que exhibe este extraño comportamiento, si esto ayuda. Contiene un proyecto básico de ASP.NET MVC 1 y un proyecto de Silverlight 3. Navegue a la página SilverlightControlTestPage.html en el sitio web para ver el problema en acción.
La url redirigida también apunta a un recurso en el mismo servidor que se envió a la Xap y que vino? – AnthonyWJones
Hasta donde yo sé, Chrome y Firefox pueden manejar las credenciales de manera diferente. ¿Hay algo sobre las credenciales? ¿La URL solicitada acepta solicitudes anónimas o autenticadas? ¿Revisó los registros de acceso del servidor para los códigos HTTP? – JoeBilly
¿Se puede usar la instalación de manejo de HTTP del cliente? De esa forma tendrá acceso a todos los códigos de estado. Consulte http://msdn.microsoft.com/en-us/library/cc838250(v=VS.95).aspx – feroze