Domanda

Non è la prima volta che utilizzo questo metodo per inviare una richiesta POST e non ho mai avuto problemi:

    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 () Ricevo un System.Net.WebException: la connessione sottostante è stata chiusa: si è verificato un errore imprevisto durante l'invio.
Ancora più interessante, funziona perfettamente su alcune macchine, ma non funziona sulla mia macchina (Windows 7 Beta) e sul server di produzione (Windows Server 2008). Ulteriori informazioni:

Funziona - Windows Xp - .NET 2.0
Funziona - Windows Xp - .NET 3.5
Funziona - Windows Server 2003 - .NET 3.0
Non funziona - Windows Vista - .NET 3.5
Non funziona - Windows Server 2008 - .NET 3.5
Non funziona - Windows 7 Beta - .NET 3.5 SP1

Provato:

  • Mazzo di cose da qui , nulla ha aiutato.
  • Utilizzando WebClient , nulla è cambiato.
  • Ritoccando queste , ma non è stato possibile notare alcuna differenza notevole.
  • Ho provato WireShark . Un ottimo strumento.

[Risolto. Kinda]
Ho dimenticato di menzionare, ma Uri era https ... Ho provato http e ha funzionato. Non ci posso credere, non ci ho provato prima ...
Tuttavia, apprezzerei se qualcuno facesse luce su tutta questa situazione.

È stato utile?

Soluzione

Il mio primo piano di attacco sarebbe quello di utilizzare WireShark per vedere cosa succede a livello di rete in ogni caso. Guarda cosa invia ogni macchina.

Inoltre, hai notato differenze tra i sistemi operativi, ma tutti hanno la stessa identica versione di .NET (fino a SP) installata?

Altri suggerimenti

I GET funzionano? Forse si tratta di un problema di configurazione proxy ( proxycfg ecc.)

Inoltre - per semplificare le cose (ridurre il numero di incognite), considera l'utilizzo di WebClient per scrivere il post:

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);
}

Prova a modificare una o più delle seguenti opzioni:

  • SendChucked
  • AllowAutoRedirect
  • TransferEncoding

Prova anche a notare le differenze tra loro con le tue varie configurazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top