/ / La requête a échoué avec le statut HTTP 417: Echec de l'attente - Utilisation des services Web - c #, asp.net, services Web, exception

La requête a échoué avec le statut HTTP 417: Échec de l'attente - Utilisation des services Web - c #, asp.net, services Web, exception

Il y a quelques minutes, je travaillais sur un projet dans Visual Studio 2010 et, tout à coup, mon ordinateur a été redémarré.
après le redémarrage, j'ai eu l'erreur ci-dessous lors de la navigation sur ce site Web sur l'ordinateur local:

La demande a échoué avec le statut HTTP 417: Échec de l'attente.

Description: une exception non gérée s'est produite lors de l'exécution de la demande Web en cours. S'il vous plaît examiner la trace de la pile pour plus informations sur l'erreur et son origine dans le code.

Détails de l'exception: System.Net.WebException: la demande a échoué avec Statut HTTP 417: Échec de l'attente.

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 en relation avec lui.

Line 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)]
Line 173:        public bool MyWebSiteEnable() {
Line 174:            object[] results = this.Invoke("MyWebSiteEnable", new object[0]);
Line 175:            return ((bool)(results[0]));
Line 176:        }

tout est ok sur ce service web.
Alors, quelle est cette erreur et comment puis-je résoudre ce problème?
il y a juste une méthode simple bool à l'intérieur de ce service web qui renvoie true.
et j'utilise ce service web dans 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 l'ajoute à nouveau, mais j'ai toujours cette erreur!
qu'est-ce qui ne va pas avec ça?

Merci d'avance

Réponses:

42 pour la réponse № 1

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

Dans la mesure où il est peu probable que vous persuadiez votre fournisseur de services Internet de modifier ses pratiques (vous ne ferez aucun mal à une demande, par conséquent), vous devez désactiver le comportement d'envoi d'un message 100-Continue comme le lien le suggère:

Mettre ce code avant une requête Web:

System.Net.ServicePointManager.Expect100Continue = false;

Ou, en ajoutant les lignes suivantes au fichier de configuration des applications en tant qu’enfant de <configuration> marque:

<system.net>
<settings>
<servicePointManager expect100Continue="false" />
</settings>
</system.net>

0 pour la réponse № 2

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

<system.net>
<defaultProxy useDefaultCredentials="true" >
</defaultProxy>
</system.net>