Vous recevez un ou plusieurs messages d'erreur lorsque vous essayez effectuer une demande HTTP dans une application qui repose sur .NET Framework 1.1 Service Pack 1

Traductions disponibles Traductions disponibles
Numéro d'article: 915599 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article décrit messages d'erreur que vous pouvez recevoir lorsque vous utilisez Microsoft .NET Framework 1.1 Service Pack 1 (SP1) aux demandes HTTP création ou lorsque vous appelez un service Web.

Symptômes

Lorsque vous essayez d'effectuer une demande HTTP dans une application qui repose sur le .NET Framework, un ou plusieurs des messages d'erreur suivants peut s'afficher :
Message d'erreur 1
La connexion sous-jacente a été fermée : Impossible de se connecter au serveur distant.
Message d'erreur 2
La connexion sous-jacente a été fermée : une erreur inattendue s'est produite sur un envoi.
Message d'erreur 3
La connexion sous-jacente a été fermée : une erreur inattendue s'est produite lors de la réception.
Message d'erreur 4
La connexion sous-jacente a été fermée : le serveur a rencontré une violation de protocole HTTP.
Message d'erreur 5
La connexion sous-jacente a été fermée : Impossible d'établir un canal sécurisé pour SSL/TLS.
Message d'erreur 6
L'opération a expiré

Cause

Message d'erreur 1

Ce problème se produit lorsque le .NET Framework ne peut pas établir une connexion au serveur distant. Ce problème peut se produire lorsqu'une ou plusieurs des conditions suivantes sont remplies :
  • Une panne réseau se produit.
  • Un serveur proxy bloque la demande HTTP.
  • Un problème DNS (Domain Name System) (DNS) se produit.
  • Un problème d'authentification réseau se produit.
Pour résoudre ce problème, consultez Solutions A, B et c.

Message d'erreur 2

Ce problème se produit lorsque l'ordinateur client ne peut pas envoyer HTTP demande. L'ordinateur client ne peut pas envoyer la demande HTTP car la connexion a été fermée ou n'est pas disponible. Ce problème peut se produire lorsque l'ordinateur client envoie un grand nombre de données. Pour résoudre ce problème, consultez Solutions A, D, E, F et o.

Message d'erreur 3

Ce problème se produit lorsque le serveur ou un autre périphérique de réseau inattendu ferme une connexion TCP (Transmission Control Protocol) existante. Ce problème peut se produire lorsqu'une valeur du délai d'attente sur le serveur ou sur le périphérique réseau est définie trop bas. Pour résoudre ce problème, consultez Solutions A, D, E, F et o. Le problème peut également se produire que si le serveur réinitialise la connexion inattendu, par exemple, si une exception non gérée bloque le processus du serveur. Analyser les journaux du serveur pour voir si peut-être le problème.

Message d'erreur 4

Ce problème se produit lorsque le .NET Framework détecte que la réponse du serveur ne répond pas aux HTTP 1.1 RFC. Ce problème peut se produire lorsque la réponse contient des en-têtes incorrects ou délimiteurs en-tête incorrect. Pour résoudre ce problème, consultez Solutions A et g.

Pour plus d'informations sur les en-têtes HTTP, reportez-vous au site Web du W3c (World Wide Web Consortium) suivant :
http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6
Microsoft fournit des informations contacts de tiers pour vous aider à trouver support technique. Informations de contact peuvent changer sans préavis. Microsoft ne garantit pas l'exactitude de ces informations contacts fournisseur tiers.

Message d'erreur 5

Ce problème peut se produire lorsqu'une ou plusieurs des conditions suivantes sont remplies :
  • Vous utilisez un certificat client non valide ou un certificat de serveur non valide.
  • Vous rencontrez un problème de connexion TCP.
  • L'ordinateur client envoie un grand nombre de données.
  • Un paramètre de délai sur le serveur ou sur un autre périphérique réseau est défini trop bas.
  • Vous rencontrez un problème de compatibilité du protocole HTTPS.
Des problèmes de connexion TCP, consultez Solutions A, D, E, F et o. Pour les problèmes des certificats clients et des problèmes de certificat de serveur, consultez résolutions H et I. Pour les problèmes de compatibilité du protocole HTTPS, consultez Résolution de j.

Message d'erreur 6

Ce problème se produit lorsque la valeur de délai du client est atteinte avant qu'une des conditions suivantes se produise :
  • Une connexion HTTP est établie.
  • Une réponse HTTP est reçue depuis le serveur.
  • Le flux de données est entièrement écrit sur ou lire.
Pour résoudre ce problème, consultez Solutions A, E, K, L, M et n.

Résolution

Remarque La liste suivante contient les solutions possibles qui peuvent s'appliquer lorsqu'un de ces problèmes se produit. Pas toutes ces résolutions s'appliquent à tous ces problèmes. Voir les descriptions de problème dans la section «Cause» afin de déterminer quelle solution s'applique.

Résolution A

Pour résoudre ce problème, assurez-vous que vous utilisez la dernière version du .NET Framework. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
318785Comment faire pour déterminer quelles versions du .NET Framework sont installées et déterminer si des service packs ont été appliqués

Résolution B

Pour résoudre ce problème, assurez-vous que les paramètres de proxy sont corrects. Pour ce faire, utilisez les techniques suivantes :
  • Utilisez la méthode WebProxy.GetDefaultProxy statique. Pour plus d'informations, site Web Microsoft suivant :
    http://msdn2.microsoft.com/en-us/library/system.net.webproxy.getdefaultproxy(vs.71).aspx
  • Définir un <proxy> élément dans les fichiers de configuration de l'application. Pour plus d'informations, site Web Microsoft suivant :
    http://msdn2.microsoft.com/en-us/library/aa903369(VS.71).aspx
  • Configurer le client .NET pour utiliser HTTP 1.0 en modifiant la propriété HttpWebRequest.ProtocolVersion . Pour plus d'informations, site Web Microsoft suivant :
    http://msdn2.microsoft.com/en-us/library/system.net.httpwebrequest.protocolversion(vs.71).aspx
    Remarque Par défaut, le .NET Framework utilise HTTP 1.1.
  • Si vous utilisez SSL (Secure Sockets Layer), assurez-vous que le proxy n'est pas configuré pour utiliser les règles qui bloquent HTTPS.
  • Si vous utilisez autoproxy, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
    873199Comment utiliser autoproxy dans du code managé

Résolution C

Pour résoudre ce problème, assurez-vous que l'application dispose des autorisations pour effectuer des appels de réseau et pour rendre socket appelle. Cette solution s'applique lorsque l'application qui rend le HttpWebRequest appel s'exécute à l'intérieur d'une application Web. Vous devrez peut-être accorder à lire les autorisations pour le ASPNET compte afin que vous pouvez accéder les ressources suivantes :
  • Microsoft WinSockProxy WS2.0 Provider (Wspwsp.dll) fichier
  • HKLM\System\CurrentControlSet\Services\DnsCache
    clé de Registre
  • HKLM\System\CurrentControlSet\Services\WinSock2
    clé de Registre
Remarque Pour déterminer si le processus de travail ASPNET possède les autorisations nécessaires, utilisez l'utilitaire FileMon et RegMon il. Pour télécharger l'utilitaire de FileMon et l'utilitaire de RegMon, site Web Sysinternals suivant :
http://technet.microsoft.com/en-us/sysinternals/default.aspx
Les produits tiers qui traite de cet article sont fabriqués par des sociétés indépendantes de Microsoft. Microsoft aucune garantie, expresse ou implicite, en ce qui concerne les performances ou la fiabilité de ces produits.

Résolution D

Pour résoudre ce problème, désactivez la fonctionnalité keep-alive. Dans le .NET Framework, définissez la propriété HttpWebRequest.KeepAlive à FALSE. Pour cela, lorsque vous appelez un service Web, procédez comme suit.

Remarque La fonctionnalité keep-alive est requise pour l'authentification NTLM.
  1. Créer une nouvelle classe en héritant de la classe proxy générée.
  2. Ajoutez une méthode à la classe pour substituer la méthode GetWebRequest . Cette modification vous permet d'accéder à l'objet HttpWebRequest . Si vous utilisez Microsoft Visual c#, la nouvelle méthode doit être similaire à la suivante.
    class MyTestService:TestService.TestService
    {
        protected override WebRequest GetWebRequest(Uri uri)
        {
            HttpWebRequest webRequest = (HttpWebRequest) base.GetWebRequest(uri);
            //Setting KeepAlive to false
            webRequest.KeepAlive = false;
            return webRequest;
        }
    }
    si vous utilisez Microsoft Visual Basic .NET, la nouvelle méthode doit être similaire à la suivante.
    Class MyTestService 
         Inherits TestService.TestService
            Protected Overrides Function GetWebRequest(ByVal uri As Uri) As System.Net.WebRequest
                Dim webRequest As System.Net.HttpWebRequest
                webRequest = CType(MyBase.GetWebRequest(uri), System.Net.HttpWebRequest)
               'Setting KeepAlive to false 
                webRequest.KeepAlive = False
                GetWebRequest = webRequest
            End Function
    End Class
  3. Créer une instance de la nouvelle classe, puis utilisez la nouvelle classe à appeler la méthode de service Web.

Résolution d'adresse

Pour résoudre ce problème, définissez la propriété ServicePointManager.MaxServicePointIdleTime inférieure à la valeur de délai d'attente de la connexion keep-alive serveur.

Notes
  • Lorsqu'un objet ServicePoint reste inactif pendant la durée spécifiée dans la propriété MaxIdleTime , il est éligible pour une opération garbage collection.
  • Assurez-vous que la propriété ServicePointManager.MaxServicePointIdleTime est définie avant tout des requêtes. Pour plus d'informations sur la propriété ServicePointManager.MaxSercvePointIdleTime , site Web Microsoft suivant :
    http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.maxservicepointidletime(vs.71).aspx

Résolution F

Pour résoudre ce problème, augmentez la valeur de délai d'attente sur l'ordinateur serveur et sur d'autres périphériques réseau. Pour augmenter la valeur de délai d'attente dans Microsoft Internet Information Services (IIS) 6.0, procédez comme suit :
  1. Cliquez sur Démarrer , cliquez sur Panneau de configuration , sur Outils d'administration , puis cliquez sur Gestionnaire des Services Internet (IIS) .
  2. Cliquez sur le nom de l'ordinateur que vous souhaitez reconfigurer, puis sur Sites Web .
  3. Cliquez avec le bouton droit sur le site Web que vous souhaitez reconfigurer, puis cliquez sur Propriétés .
  4. Tapez une nouvelle valeur dans le délai de connexion puis cliquez sur OK .
  5. Dans le menu fichier , cliquez sur Quitter .

Résolution G

Pour contourner ce problème, définissez useUnsafeHeaderParsing à True .Pour plus d'informations sur la propriété useUnsafeHeaderParsing, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
888528Une liste des bogues qui sont corrigés dans le .NET Framework 1.1 Service Pack 1, mais qui ne sont pas décrits ailleurs dans les articles base de connaissances

Résolution H

Pour résoudre ce problème, fournir un certificat client valide pour l'application. Pour plus d'informations sur l'utilisation de certificats clients, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la base de connaissances Microsoft :
901183Comment faire pour appeler un service Web en utilisant un certificat client pour l'authentification dans une application Web ASP.NET
895971L'envoi d'un certificat client à l'aide des classes HttpWebRequest et HttpWebResponse dans Visual c# .NET

Résolution I

Pour résoudre ce problème, fournir un certificat de sécurité valide pour le serveur. En outre, vous pourrez peut-être résoudre ce problème en installant le certificat de l'autorité (CA) de certification racine ou en corrigeant le nom commun du certificat serveur.Pour plus d'informations sur le certificat de serveur de noms, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
813618Alerte de sécurité : le nom du certificat de sécurité n'est pas valide ou ne correspond pas le nom du site
Avertissement Cette solution de contournement peut rendre votre ordinateur ou votre réseau plus vulnérable aux attaques d'utilisateurs malintentionnés ou de logiciels nuisibles tels que les virus. Nous déconseillons cette solution de contournement mais que vous fournissons cette information afin que vous pouvez implémenter cette solution de contournement à votre convenance. Utilisez-la à vos risques et périls.

Vous pouvez également modifier le code d'application pour ignorer ces avertissements de certificats. Pour ce faire, implémentez votre propre interface ICertificatePolicy . Vous pouvez ensuite définir la propriété ServicePointManager.CertificatePolicy à utiliser votre instance de stratégie de certificat avant le Web appel de méthode de service est effectué.

Remarque La méthode ICertificatePolicy.CheckValidationResult implémente la stratégie de validation de certificat application. Pour plus d'informations sur la méthode ICertificatePolicy.CheckValidationResult , site Web Microsoft suivant :
http://msdn2.microsoft.com/en-us/library/system.net.icertificatepolicy.checkvalidationresult(vs.71).aspx
Pour plus d'informations et un exemple de code, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
823177PRB:» System.NET.WebException. La connexion sous-jacente a été fermée. Impossible d'établir relation d'approbation avec le serveur distant» message d'erreur lors de la mise à niveau le .NET Framework
important Nous vous recommandons pas ignorer avertissements de certificat SSL dans le code en raison de risques possibles.

Résolution J

Pour résoudre ce problème, modifiez le protocole HTTPS à partir de SSL TLS (Transport Level Security).

Remarque Si vous utilisez déjà TLS, changer le protocole HTTPS pour SSL. Pour modifier le protocole HTTPS sur l'ordinateur client, consultez la section «Propriété ServicePointManager.SecurityProtocol » sur le site Microsoft suivant :
http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.securityprotocol.aspx
Remarque Par exemple, pour prendre en charge le protocole SSL3 et le protocole TLS1, utiliser le code qui est similaire à la suivante.
ServicePointManager.SecurityProtocol= SecurityProtocolType.Ssl3|SecurityProtocolType.Tls;
Pour plus d'informations modifier le protocole HTTPS sur l'ordinateur serveur, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
187498La désactivation de PCT 1.0, SSL 2.0, SSL 3.0 ou TLS 1.0 dans IIS

Résolution K

Pour résoudre ce problème, augmentez la valeur de la propriété maxConnection . Pour ce faire, modifiez les fichiers de configuration de l'application ou ajoutez le code d'application.

Remarque La valeur par défaut de la propriété maxConnection est 2. Pour Microsoft connectée ASP.NET applications qui appellent des services Web, il est recommandé que vous définissez une valeur de 12 fois le nombre de processeurs. Pour définir cette valeur à l'aide le code d'application, utilisez la propriété ServicePointManager.DefaultConnectionLimit . Pour plus d'informations sur la propriété ServicePointManager.DefaultConnectionLimit , site Web Microsoft suivant :
http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit(vs.71).aspx
Pour définir cette valeur en utilisant les fichiers de configuration pour l'application, ajoutez le code suivant dans le fichier de configuration.
<connectionManagement>
  <add address="*" maxconnection="12"/>
</connectionManagement>
pour savoir comment utiliser la <connectionmanagement> élément, reportez-vous à l'adresse Microsoft suivante :
http://msdn2.microsoft.com/en-us/library/aa903351(VS.71).aspx

Résolution de L

Pour résoudre ce problème, assurez-vous que les paramètres de délai d'attente sur le serveur et sur d'autres périphériques réseau sont implémentées correctement.Pour savoir comment implémenter des paramètres de délai, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
904262La demande est envoyée par la classe HttpWebRequest peut cesser de répondre lorsque vous utilisez la classe HttpWebRequest dans une application ASP.NET

Résolution M

Pour résoudre ce problème, en savoir plus sur Réglage des performances ASP.NET.Pour plus d'informations sur le réglage des performances ASP.NET, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
821268Conflits, faibles performances et blocages lorsque vous effectuez des demandes de service Web à partir d'applications ASP.NET

Résolution de N

Pour résoudre ce problème, augmentez les valeurs des propriétés de délai d'attente dans le code d'application client. Pour ce faire, utilisez les propriétés suivantes :
  • HttpWebRequest.Timeout
  • HttpWebRequest.ReadWriteTimeout
Pour plus d'informations sur la propriété HttpWebRequest.Timeout , site Web Microsoft suivant :
http://msdn2.microsoft.com/en-us/library/cy9yd268.aspx
Pour plus d'informations sur la propriété HttpWebRequest.ReadWriteTimeout , site Web Microsoft suivant :
http://msdn2.microsoft.com/en-us/library/b1w9c0s4.aspx

Résolution O

Pour résoudre ce problème, assurez-vous que l'ordinateur client n'envoie pas HTTP 100 - continue d'en-tête. En outre, assurez-vous que l'ordinateur client n'attend pas à recevoir des HTTP 100-continue d'en-tête.

Remarque Cette solution est efficace si le serveur Web ou le serveur proxy ne prend pas en charge HTTP 100-continue d'en-tête. Pour savoir comment désactiver HTTP 100-continue d'en-tête de l'ordinateur client, visitez le site de Web Microsoft suivant :
http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.expect100continue.aspx

Références

Pour plus d'informations considérations de performances lorsque vous apportez Web service appels provenant d'applications connectées à ASP.NET, visitez le site Web de Microsoft suivant :
http://msdn2.microsoft.com/en-us/library/aa480507.aspx
Pour plus d'informations sur les problèmes de performances et problèmes de blocage lorsque vous apportez Web traiter les demandes provenant d'applications connectée avec ASP.NET, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
821268Conflits, faibles performances et blocages lorsque vous effectuez des demandes de service Web à partir d'applications ASP.NET
Pour plus d'informations améliorer les performances des applications connectées à ASP.NET, site Web Microsoft suivant :
http://msdn2.microsoft.com/en-us/library/ms998549.aspx
Pour savoir comment améliorer les performances de Web services, site suivant Microsoft Web :
http://msdn2.microsoft.com/en-us/library/ms998562.aspx
Pour plus d'informations sur la création d'applications connectée ASP.NET sécurisées, site Web Microsoft suivant :
http://msdn2.microsoft.com/en-us/library/aa302408.aspx
Remarque Le protocole de transport TCP est utilisé pour les demandes HTTP. TCP est un protocole fiable orienté connexion. Toutefois, si une connexion TCP se ferme inopinément, l'application réessaie la demande. Pour plus d'informations sur le protocole TCP et sur le comportement de client si le serveur ferme une connexion, site suivant Web du W3c (World Wide Web Consortium) :
http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.4
Microsoft fournit des informations contacts de tiers pour vous aider à trouver support technique. Informations de contact peuvent changer sans préavis. Microsoft ne garantit pas l'exactitude de ces informations contacts fournisseur tiers. Pour plus d'informations sur l'utilitaire FileMon et RegMon il, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
198038Outils utiles pour les problèmes package et déploiement
Pour plus d'informations sur le Moniteur réseau, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la base de connaissances Microsoft :
148942Comment faire pour capturer le trafic réseau avec le Moniteur réseau
812953 Comment utiliser le Moniteur réseau pour capturer le trafic réseau

Propriétés

Numéro d'article: 915599 - Dernière mise à jour: dimanche 8 février 2009 - Version: 2.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft .NET Framework 1.1 Service Pack 1
Mots-clés : 
kbmt kbtshoot kbprb KB915599 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 915599
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com