Question

Ce n'est pas la première fois que j'utilise cette méthode pour envoyer une demande POST et je n'ai jamais eu de problèmes:

    public static Stream SendPostRequest(Uri uri, byte[] postData)
    {
        var request = WebRequest.Create(uri);
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = postData.Length;
        Stream requestStream = request.GetRequestStream();
        requestStream.Write(postData, 0, postData.Length);
        requestStream.Close();
        return request.GetResponse().GetResponseStream();
    }

On request.GetRequestStream () Je reçois une exception System.Net.Web: La connexion sous-jacente était fermée: une erreur inattendue s'est produite lors d'un envoi.
Encore plus intéressant, cela fonctionne parfaitement sur certaines machines, mais pas sur ma machine (Windows 7 Bêta) et le serveur de production (Windows Server 2008). Plus d'informations:

Fonctionne - Windows Xp - .NET 2.0
Works - Windows Xp - .NET 3.5
Works - Windows Server 2003 - .NET 3.0
Ne fonctionne pas - Windows Vista - .NET 3.5
Ne fonctionne pas - Windows Server 2008 - .NET 3.5
Ne fonctionne pas - Windows 7 Beta - .NET 3.5 SP1

Essayé:

  • Un tas de choses de ici , rien d’a aidé.
  • Utilisation de WebClient , rien n'a changé. / li>
  • Modification de ces options , mais n'a pas ' ne remarquez aucune différence notable.
  • Essayé WireShark . Un très bon outil.

[Résolu. Kinda]
J'ai oublié de mentionner, mais Uri était https ... J'ai essayé http et cela a fonctionné. Je ne peux pas croire, je n'ai pas essayé cela plus tôt ...
J'apprécierais tout de même que quelqu'un jette une lumière sur toute cette situation.

Était-ce utile?

La solution

Mon premier plan d'attaque consisterait à utiliser WireShark pour voir ce qui se passe au niveau du réseau dans chaque cas. Voir ce que chaque machine envoie.

De plus, vous avez noté des différences entre les systèmes d'exploitation, mais ont-ils tous exactement la même version de .NET (jusqu'au SP) installés?

Autres conseils

Est-ce que les GET fonctionnent? C’est peut-être un problème de configuration proxy ( proxycfg , etc.).

Aussi - pour simplifier les choses (réduire le nombre d'inconnues), envisagez d'utiliser WebClient pour publier le message:

using (WebClient client = new WebClient())
{
    client.Headers.Add("content-type","application/x-www-form-urlencoded");
    client.UploadData(address, data);
    // or more simply
    client.UploadValues(address, nameValuePairs);
}

Essayez de modifier une ou plusieurs des options suivantes:

  • SendChucked
  • AllowAutoRedirect
  • TransferEncoding

Essayez également de noter les différences entre elles avec vos différentes configurations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top