У меня есть очень простой сервис, который вызывает URL-адрес и фиксирует статус, который выписывается этой службой;Подключенное соединение было закрыто: произошла непредвиденная ошибка
// Service call used to determine availability
System.Net.WebClient client = new System.Net.WebClient();
// I need this one (sorry, cannot disclose the actual URL)
Console.WriteLine(client.DownloadString(myServiceURL + ";ping"));
// I added this for test purposes
Console.WriteLine(client.DownloadString("https://www.google.com"));
«DownloadString» для myServiceURL линии бросает ошибку «Базовое соединение закрыто: Непредвиденная ошибка», и нет ничего показывать в Скрипаче для этой линии, в то время как «DownloadString» для google.com работ и Для этого я вижу консольный вывод.
Следуя другим рекомендациям по ошибке, я попытался сочетать настройки UseDefaultCredentials, опции кодирования, добавляя соответствующие заголовки в запрос, ни один из которых не имеет никакого значения.
client.UseDefaultCredentials = true;
client.Encoding = Encoding.UTF8;
Когда я перехожу к myServiceURL в браузере, он работает и показывает «ОК», как и ожидалось.
Другой метод из тех же служб были закодирован следующим образом:
// Request
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(myServiceURL + ";login");
// Set the request configuration options
req.Method = "POST";
req.ContentType = "text/xml";
req.ContentLength = bytes.Length;
req.Timeout = -1;
// Call for the request stream
using (Stream os = req.GetRequestStream())
{
os.Write(bytes, 0, bytes.Length);
}
// ....snip
// This line fails with the same error as before
WebResponse resp = req.GetResponse()
Это все время работает на Windows 7 (64-битные) ПК с использованием .NET Framework 4.0; служба myServiceURL - это сторонний сервис, для которого я не контролирую.
Вы пробовали req.Proxy = WebProxy.GetDefaultProxy(); –
Только что попробовали использовать GetDefaultProxy (который устарел?), И это не имело никакого значения. – Sean
oo жаль, что, скорее, скорее, чем contentype, вы можете использовать этот req как HttpWebRequest.Accept = "text/xml"; –