c#된 플러그 가능한 getResponse()정지 및 정지 내 프로그램
-
13-09-2020 - |
문제
도를 사용 된 플러그 가능한 나머지를 사용하 같은 서비스를 원격 서버에서 실행 자신,내 코드에 매달려 있었습니다.그때 나는 그것을 시도를 콘솔 프로그램으로 확인과는 아무 상관이 프로그램 자체만!
string credentialsJson = @"{""username"":""test"",
""password"":""test""
}";
int tmp = ServicePointManager.DefaultConnectionLimit;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"https://qrua.com/qr/service" + @"/auth/login");
request.Method = "POST";
request.KeepAlive = true;
request.Timeout = 50000 ;
request.CookieContainer = new CookieContainer();
request.ContentType = "application/json";
try
{
StreamWriter writer = new StreamWriter(request.GetRequestStream());
writer.Write(credentialsJson);
}
catch (Exception e)
{
Console.WriteLine("EXCEPTION:" + e.Message);
}
//WebResponse response = request.GetResponse();
try
{
using (WebResponse response = (HttpWebResponse)request.GetResponse())
{
Console.WriteLine("request:\n" + request.ToString() + "\nresponse:\n" + response.ContentLength);
response.Close();
}
}
catch (Exception e)
{
Console.WriteLine("EXCEPTION: in sending http request:" + " \nError message:" + e.Message);
}
도 몇 가지 서로 다른 포럼이지만 그것은 도움이됩니다.도 간단한 콘솔 응용 프로그램으로 위의 코드를 콘솔을 중단하고 무기한!어떤 도움이 될 것입니다.
감사
해결책
당신은 결코 폐쇄 StreamWriter
...그래서 나는 그것을 의심하지 않고 했습니다.틀림없이 기대에 오류가에서 대신 서버의 중단,하지만 그럴 가치가 있습니다.
Btw,당신은 필요하지 않을 닫고 응답 고 폐기습니다.그 using
문 충분하다.
다른 팁
원격 사이트가 응답하지 않았기 때문에 사용자에게 작업을 완료 할 수 없기 때문에 원격 서버가 Timeout
를 정의하고 사용자에게 작업을 완료 할 수 없음을 알리기 위해 사용한 것처럼 원격 서버가 응답하지 않으면 할 수있는 것이별로 없습니다.P>
var request = (HttpWebRequest)WebRequest.Create("https://qrua.com/qr/service/auth/login");
request.Timeout = 5000;
// If the server doesn't respond within 5 seconds you might catch the timeout exception
using (var response = request.GetResponse())
{
}
.
UI를 정지하지 않으려면 begingetresponse
request.contentLength를 지정하십시오.
수행하기 전에 :
StreamWriter writer = new StreamWriter(request.GetRequestStream());
writer.Write(credentialsJson);
.
다음과 같이 시도하십시오 :
using (MemoryStream stream = new MemoryStream())
{
using (var writer = StreamWriter writer = new StreamWriter(stream))
{
writer.Write(credentialsJson);
writer.Close();
}
request.ContentLength = stream.Length;
}
. 제휴하지 않습니다 StackOverflow