서버로 작동하는 다중 스레드 콘솔 응용 프로그램이 있습니다.다중 스레드 응용 프로그램에서 4th HttpWebRequest의 이상한 시간 초과
//code copied from http://www.switchonthecode.com/tutorials/csharp-tutorial-simple- threaded-tcp-server
//blocks until a client has connected to the server
TcpClient client = tcpListener.AcceptTcpClient();
//create a thread to handle communication with connected client
Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm));
clientThread.Start(client);
이 스레드는 다음 코드를 사용 HttpWebRequests의 숫자를 만드는 : 서버는 새 스레드에게 새로운 클라이언트가 TcpListener에 연결하는 모든 시간을 생성합니다
public static HttpWebResponse HttpGet(string pRequestURI, string pArgs)
{
string requestURI = string.Format("{0}?{1}", pRequestURI, pArgs);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestURI);
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
return response;
}
문제는, 내가 얻을 것입니다 FOURTH 요청시 제한 시간. 그것은 정말로 별났다. 그리고 나는 그것의 취급 법을 얻을 수 없다. 코드는 단일 스레드 응용 프로그램에있을 때 제대로 작동했습니다. 나는 또한 사용하여 응답 스트림을 닫습니다 확인하고 오전 :
response.Close();
requestURI이 올바른지, '나는 복사하여 브라우저에 붙여 시도 원인. 사실, 네 번째 요청이 무엇인지는 중요하지 않습니다. (나는 다른 시도를 시도했습니다.) 나는 항상 타임 아웃을합니다.
나는 thread-limits와 관련이 있을지 모르지만 실제로 어떻게 해결해야할지 모르겠다. 어떤 제안이라도 대단히 감사하겠습니다.
감사합니다.
클라이언트가 하나뿐이므로 서버에서 네 번째 요청이 실패합니다. 아니면 문제가 둘 이상의 클라이언트에서만 나타 납니까? – arx
@arx 지금은 단 하나의 클라이언트 인 ASP.NET 웹 응용 프로그램 만 있습니다. 결국 서버에는 더 많은 클라이언트가 있지만 지금은 하나만 가지고 있습니다. – Rachel
스레딩 문제와 비슷하게 들리지 않습니다. 다른 연결을 기다리는 유휴 상태 인 주 스레드와 간섭 할 다른 스레드가없는 서비스 스레드 만 있습니다. 웹 요청을하는 사이에 무엇을하고 있습니까? 다음 요청을하기 전에 응답을 닫으시겠습니까? 아니면 모두 열어 두어 함께 처리 할 수 있습니까? – arx