Pergunta

Esta não é a primeira vez que eu estou usando esse método para enviar um pedido POST, e eu nunca tive qualquer problema:

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

Em request.GetRequestStream () Estou recebendo um System.Net.WebException: A ligação subjacente foi fechada:. Ocorreu um erro inesperado em um envio
Ainda mais interessante, ele funciona perfeitamente bem em algumas máquinas, mas não funciona na minha máquina (Windows 7 Beta) e servidor de produção (Windows Server 2008). Mais informações:

Works - Windows Xp - NET 2.0
Works - Windows XP - NET 3.5
Works - Windows Server 2003 - .NET 3.0
Não funciona - Windows Vista - NET 3.5
Não funciona - Windows Server 2008 - NET 3.5
Não funciona - Windows 7 Beta - .NET 3.5 SP1

Tentou:

  • monte de coisas de aqui , nada ajudou.
  • WebClient , nada mudou.
  • Ajustes do Sistema estas opções href="https://stackoverflow.com/questions/625513/sending-a-post-request-system-net-webexception/626030#626030"> , mas didn' t notar qualquer diferença notável.
  • WireShark . Uma ferramenta muito boa.

[Resolvido. Meio]
Eu esqueci de mencionar, mas Uri foi https ... Eu tentei http e funcionou. Não posso acreditar, eu não tentar que mais cedo ...
Ainda assim, eu gostaria de receber, se alguém iria brilhar uma luz sobre toda esta situação.

Foi útil?

Solução

Meu primeiro plano de ataque seria usar WireShark para ver o que está acontecendo no nível de rede em cada caso. Veja o que cada máquina está enviando.

Além disso, você já notou diferenças entre os sistemas operacionais, mas todos eles têm exatamente a mesma versão do .NET (até SP) instalado?

Outras dicas

Do GETs trabalho? Talvez seja uma questão de configuração proxy (proxycfg etc).

Além disso - para simplificar as coisas (reduzir o número de incógnitas), considere o uso WebClient para fazer o 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);
}

Tente ajustar uma ou mais das seguintes opções:

  • SendChucked
  • AllowAutoRedirect
  • TransferEncoding

Além disso, tente diferenças de notas entre eles com suas várias configurações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top