22 votes

La demande a échoué avec le statut HTTP 417 : Attente échouée - Utilisation des services Web

Il y a quelques minutes, je travaillais sur un projet dans Visual Studio 2010 et soudain mon PC a redémarré.
Après le redémarrage, j'ai obtenu l'erreur ci-dessous en naviguant sur le site web en local:

La requête a échoué avec le statut HTTP 417: Expectation Failed.

Description : Une exception non gérée s'est produite pendant l'exécution de la requête web actuelle. Veuillez consulter la trace de la pile pour plus d'informations sur l'erreur et où elle provient dans le code.

Détails de l'exception : System.Net.WebException: La requête a échoué avec le statut HTTP 417: Expectation Failed.

Le nom de mon site web est : MyWebSite
J'ai un service web sur un serveur distant (un VPS) que MyWebSite utilise et cette erreur est liée à cela.

Ligne 172: [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/MyWebSiteEnable", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
Ligne 173: public bool MyWebSiteEnable() {
Ligne 174: object[] results = this.Invoke("MyWebSiteEnable", new object[0]);
Ligne 175: return ((bool)(results[0]));
Ligne 176: }

Tout est en ordre avec ce service web.
Alors, quelle est cette erreur et comment puis-je la corriger ?
Il y a juste une méthode booléenne simple à l'intérieur de ce service web qui retourne true.
Et j'utilise ce service web dans le code-behind comme ci-dessous :

private void CheckForPageExpiration()
{
    MyService service = new MyService();
    if (service.MyWebSiteEnable())
    {
    }
    else
    {
        Response.Redirect("~/blank.aspx");
    }
}

J'ai supprimé ce service web et je l'ai ajouté à nouveau, mais j'ai toujours cette erreur !
Qu'est-ce qui ne va pas ?

Merci d'avance

46voto

Michael Points 2353

Ceci suggère que le problème est un serveur proxy qui ne prend pas en charge une réponse 100-continue du serveur, et montre du code pour le résoudre. Cela expliquerait pourquoi cela fonctionne sur un autre réseau.

Étant donné que vous êtes peu susceptible de convaincre votre FAI de modifier sa pratique (mais cela vaut la peine de demander), vous devriez désactiver le comportement d'envoi d'un 100-Continuer comme le suggère le lien en soit :

Mettre ce code avant une demande web :

System.Net.ServicePointManager.Expect100Continue = false;

Ou, ajouter les lignes suivantes au fichier de configuration de l'application en tant qu'enfant de la balise :

0voto

Armaan Points 111

Ajoutez la ligne de code ci-dessous dans votre fichier de configuration.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X