2009-03-09 8 views
1

Это не первый раз, когда я буду использовать этот метод для отправки запроса POST, и я никогда не было никаких проблем:Отправка запроса POST: System.Net.WebException

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

На request.GetRequestStream () Я получаю System.Net.WebException: базовое соединение было закрыто: при отправке произошла непредвиденная ошибка.
Еще интереснее, он отлично работает на некоторых машинах, но не работает на моей машине (Windows 7 Beta) и на производственном сервере (Windows Server 2008). Более подробная информация:

Works - Windows Xp - .NET 2.0
Works - Windows Xp - .NET 3.5
Works - Windows Server 2003 - .NET 3.0
не работает - Windows Vista - .NET 3.5
не работает - Windows Server 2008 - .NET 3.5
не работает - Windows 7 Beta - .NET 3.5 SP1

Пробовал:

  • связкой материал от here, ничего не помогло.
  • Использование WebClient, ничего не изменилось.
  • Тонкая настройка этих options, но не заметила заметной разницы.
  • Пробный WireShark. Очень хороший инструмент.

[Solved. Kinda]
Я забыл упомянуть, но Ури был https ... Я пробовал http, и это сработало. Не могу поверить, я не пытался это раньше ...
Все еще, я был бы признателен, если бы кто-то осветил всю эту ситуацию.

ответ

1

Моим первым планом атаки было бы использовать WireShark, чтобы увидеть, что происходит на сетевом уровне в каждом случае. Посмотрите, что отправляет каждая машина.

Кроме того, вы отметили различия между операционными системами, но все ли у них установлена ​​точная версия .NET (вплоть до SP)?

+0

Ни одна из записей не разрешила его, но это было наиболее полезно, поэтому оно было принято.Я отвечу на другой ответ, если будет лучший ответ. –

1

У ПОЛУЧИТЕ РАБОТУ? Возможно, это проблема конфигурации прокси (proxycfg и т. Д.).

также - упростить вещи (уменьшить число неизвестных), рассмотреть возможность использования WebClient сделать пост:

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

Попробуйте настройки одного или нескольких из следующих вариантов:

  • SendChucked
  • AllowAutoRedirect
  • TransferEncoding

Также попробуйте отметить различия между ними с различными конфигурациями.

Смежные вопросы