2016-06-28 1 views
0

HttpWebRequest 클래스를 사용하여 http 1.1을 통해 웹 사이트에 액세스하는 데 문제가 있습니다. 요청은 응용 프로그램을 시작할 때 처음 두 번만 작동하고 시간이 초과됩니다.2 연결 삭제 C#에서 HttpWebRequest 제한

분명히 이것은 2 개의 동시 연결 제한에 관한 것입니다.

먼저 코드를 사용하여 제거하거나 매니페스트를 변경하려면 어떻게해야합니까? 둘째, http 1.0을 강제로 사용하는 방법은 무엇입니까? 셋째, 내 코드입니다 : 내가 concurent 스레드를 사용하지 않는

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 
req.CookieContainer = Memory._Jar; 

req.Method = "GET"; 
req.Host = url.Split(new string[] { "//" }, StringSplitOptions.None)[1].Split('/')[0]; 
req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"; 
req.UserAgent = Memory._UserAgent; 
req.Headers.Add("Accept-Encoding", "gzip, deflate, sdch"); 
req.Headers.Add("Accept-Language", "en-US,en;q=0.8"); 
req.AllowAutoRedirect = false; 
req.Proxy = Memory._Proxy; 
req.Timeout = Memory._Timeout; 

HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 

, 심지어 "살아있는 유지"로 설정하지 않고 웹 사이트는 https 아님, 그래서 요청 및 응답 객체가 쓰레기를 얻을 상상 그들이 범위를 벗어 났을 때 수집하고, 그것에 관한 모든 것 (그들은 IDisposible을 구현하지 않습니다)하지만 분명히 그렇지 않습니다. ...

그래서 어떤 연결이 만들어지고 있습니까? 어떻게 지속됩니까?

답변

1

당신은 설정 파일 또는 코드 수준에서 변경할 수 2입니다.

구성 :

<connectionManagement> 
     <clear/> 
     <add address="*" maxconnection="100" /> 
    </connectionManagement> 

코드 :

System.Net.ServicePointManager.DefaultConnectionLimit = 100;

+0

이 코드는 어디에 쓰이고 내 프로젝트는 dll입니까, dll에 대한 설정을 바꿀 수 있습니까? – JDE

+0

내부 설정을 변경하려는 경우. 그냥 기본 프로젝트의 설정 파일에 추가하십시오. 또는 DLL에 한 줄의 코드 만 추가하면됩니다. –