J'ai une application Silverlight (v3) qui utilise WebRequest pour faire une demande HTTP POST à une page Web sur le même site Web que l'application Silverlight. Cette requête HTTP renvoie un 302 (une redirection) vers une autre page sur le même site Web, que HttpWebRequest doit automatiquement suivre (according to the documentation).HttpWebRequest renvoie 404s pour 302s seulement dans Internet Explorer
Il n'y a rien particulièrement spécial sur le code qui fait la demande (il utilise la pile HTTP de navigateur, il n'est pas configuré pour utiliser la pile HTTP Silverlight alternatif intégré):
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(String.Format("{0}?name={1}&size={2}", _UploadUrl, Uri.EscapeUriString(Name), TotalBytes));
request.Method = "POST";
Tout cela fonctionne très bien dans Firefox et Chrome; Silverlight fait la requête HTTP POST, reçoit une réponse 302 et fait automatiquement une requête HTTP GET de l'URL de redirection spécifiée et me la renvoie (je le sais parce que j'ai utilisé Fiddler pour regarder les requêtes HTTP en cours). Toutefois, dans Internet Explorer (v8), Silverlight exécute la requête HTTP POST, puis lance une exception WebException avec un code d'erreur 404! En utilisant Fiddler, je peux voir que Silverlight/Internet Explorer a été retourné avec succès le code d'état 302 pour la demande, et je suppose que le code d'état 404 (et WebException associé) que je reçois dans Silverlight est parce que connaître les requêtes HTTP qui sont effectuées via la pile du navigateur ne peut renvoyer que 200 ou 404 en raison de limitations. La vraie question est pourquoi Internet Explorer ne suit pas la redirection comme les autres navigateurs?
Merci d'avance pour toute aide!
EDIT: Je préférerais ne pas utiliser la pile HTTP client Silverlight, car à mes demandes de connaissances qu'elle a émises, ne comprennent pas les cookies qui font partie de la session du navigateur, y compris de façon critique le cookie d'authentification ASP.NET que je doivent être attachés aux requêtes HTTP effectuées par le contrôle Silverlight.
EDIT 2: J'ai découvert qu'Internet Explorer ne présente ce problème que lorsque vous effectuez une requête POST. Une requête GET redirige avec succès. Cela semble plutôt mauvais comportement compte tenu du nombre de sites Web font maintenant des choses dans le style Post-Redirect-Get.
J'ai créé un simple demo VS2008 solution qui présente ce comportement étrange, si cela aide. Il contient un projet de base ASP.NET MVC 1 et un projet Silverlight 3. Accédez à la page SilverlightControlTestPage.html sur le site Web pour voir le problème en action.
L'URL redirigée pointant également une ressource dans le même serveur qui a été affecté à et que le XAP est venu? – AnthonyWJones
Pour autant que je sache, Chrome et Firefox peuvent gérer les informations d'identification différemment. Y at-il quelque chose à propos des informations d'identification? L'URL demandée accepte-t-elle les demandes anonymes ou authentifiées? Avez-vous vérifié les journaux d'accès au serveur pour les codes HTTP? – JoeBilly
Pouvez-vous utiliser la fonction de gestion HTTP du client? De cette façon, vous aurez accès à tous les codes d'état. Voir http://msdn.microsoft.com/en-us/library/cc838250(v=VS.95).aspx – feroze