Вопрос

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

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

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

Работает - Windows Xp - .NET 2.0
Работает - Windows Xp - .NET 3.5
Работает - Windows Server 2003 - .NET 3.0
Не работает - Windows Vista - .NET 3.5
Не работает - Windows Server 2008 - .NET 3.5
Не работает - Бета-версия Windows 7 - .NET 3.5 SP1

Пытался:

  • Куча всякой всячины из здесь, ничего не помогло.
  • Используя Веб - клиент, ничего не изменилось.
  • Настройка этих Опции, но не заметил никакой заметной разницы.
  • Пытался Проволочная метка.Очень хороший инструмент.

[Решено.Вроде того]
Я забыл упомянуть, но Uri был https...Я попробовал http, и это сработало.Не могу поверить, что я не попробовал этого раньше...
Тем не менее, я был бы признателен, если бы кто-нибудь пролил свет на всю эту ситуацию.

Это было полезно?

Решение

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

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

Другие советы

Есть ли у вас работа?Возможно, это проблема с настройкой прокси-сервера (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);
}

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

  • Отправленный выброшенный
  • Разрешить автоматическое перенаправление
  • Кодирование передачи

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top