Azad R Chouhan Ответов: 4

Базовое соединение было закрыто: произошла непредвиденная ошибка при приеме.


Всем привет

Я снова отправляю тот же вопрос. Потому что я не получил никакого ответа на свой предыдущий вопрос.
Я работаю над приложением. Это оконное приложение, которое разработано в .net 2.0

Теперь проблема заключается в том, что когда я запускаю свое приложение и отправляю запрос другому приложению, оно успешно отправляется, но я получаю проблему, когда получаю ответ, он показывает мне ошибку, и ошибка есть

Базовое соединение было закрыто: произошла непредвиденная ошибка при приеме.

вот мой код

public string tm4b(string sURL, bool bEscapeURL, string sPostData)
{
sURL = sURL.Trim();
while (sURL.IndexOf(" ") > 0)
{
sURL = sURL.Replace(" ", " ");
}
System.Text.StringBuilder sb = new System.Text.StringBuilder();
string stmp = string.Empty;
Uri httpUri = new Uri(sURL, bEscapeURL);
try
{
 
System.Text.ASCIIEncoding byteConverter = new System.Text.ASCIIEncoding();
byte[] byte1 = byteConverter.GetBytes(sPostData);
System.Net.HttpWebRequest hwRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(httpUri);
 
hwRequest.ContentType = "application/x-www-form-urlencoded";
hwRequest.Method = "POST";
 
hwRequest.ContentLength = sPostData.Length; ;
System.IO.Stream PostStream = hwRequest.GetRequestStream();
PostStream.Write(byte1, 0, byte1.Length);
System.Net.HttpWebResponse hwResponse = (System.Net.HttpWebResponse)hwRequest.GetResponse();
System.IO.StreamReader sRead = new System.IO.StreamReader(hwResponse.GetResponseStream(),
System.Text.Encoding.ASCII);
 
if ((stmp = sRead.ReadLine()) != null)
{
 
sb.Append(stmp + "");
 
}
 
PostStream.Close();
sRead.Close();
 
return sb.ToString();
 
}
catch (Exception ex)
{
 
return "error";
}
return "Request Error";
 
}



Но он дает мне эту ошибку только для одного url-адреса, а для другого url-адреса он работает хорошо

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

Так что эксперты пожалуйста помогите мне

4 Ответов

Рейтинг:
5

Azad R Chouhan

Я использую fidler на машине, на которой запущено приложение, и добавляю этот код в конфигурацию приложения



<system.net>
<settings>
<httpwebrequest useunsafeheaderparsing="true" />
</settings>
</system.net>



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


saurabhbhatt87

я так и не нашел удовлетворительного ответа от кода.

Member 1866318

Не работает в оконном приложении

Рейтинг:
1

Bernhard Hiller

"Но он дает мне эту ошибку только для одного url - адреса, а для другого url-адреса он работает хорошо" - вот важный момент. Какой это URL-адрес? Работает ли URL-адрес, когда вы используете его из обычного веб-браузера (например, Internet Explorer)? Когда сервер решит закрыть соединение, вы получите ошибку в коде вашего клиента, и это на самом деле правильное поведение вашего клиента. Если сервер также принадлежит вам, проверьте, что сервер делает с этим URL-адресом.


Azad R Chouhan

Я использую fidler на машине, на которой запущено приложение, и добавляю этот код в конфигурацию приложения
&ЛТ;система.чистый&ГТ;
<Настройки>
&ЛТ;класса HttpWebRequest useunsafeheaderparsing кому значение="истинной"и GT;



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

Рейтинг:
1

Member 14362952

Это связано с TLS, просто обновите .net до последней версии.

Это происходит, когда сервер отказывает в протоколе TLSv1.0 или в протоколе TLSv1.0-отключено со стороны сервера.
Чтобы решить эту проблему со стороны клиента, просто обновитесь до последней версии и посмотрите.


Рейтинг:
0

veeramanidhana

Если сервис, то по протоколу HTTPS, добавьте эту строчку перед веб-клиента позвонить

Servicepointmanager и.SecurityProtocol = (SecurityProtocolType)768 | (SecurityProtocolType)3072;


Member 13809163

Большое спасибо.

Эта работа--
Servicepointmanager и.SecurityProtocol = (SecurityProtocolType)768 | (SecurityProtocolType)3072;

Member 14842549

это тоже работает для меня.

Drew Thomas

И на меня это тоже подействовало. Большое спасибо