2015-07-23 4 views
0

У меня есть демо ASHx WebService так:C# HttpClient соединение KeepAlive

public void ProcessRequest(HttpContext context) 
    { 
     //string s = context.Request.Form["prova"]; 
     string a= context.Request.Form["a"]; 
     string b= context.Request.Form["b"]; 

     TryKeepAlive(); 
     context.Response.Write("ok"); 
    } 

где trykeepalive просто делает:

private void TryKeepAlive() 
    { 
     int msTimeout = 999999999; 
     System.Threading.Thread.Sleep(msTimeout); 
    } 

это просто демо, но у меня есть такая же проблема сохранения соединения живой в другом реальном методе.

с телефона я звоню пост через HttpClient:

public async void PostIt() 
    { 
     string url = "myurl.htm"; 
     var values = new List<KeyValuePair<string, string>> 
       { 
        new KeyValuePair<string, string>("a", "12345"), 
        new KeyValuePair<string, string>("b", "123456") 
       }; 
     var httpClient = new HttpClient(new HttpClientHandler()); 

     HttpResponseMessage response = await httpClient.PostAsync(url, new FormUrlEncodedContent(values)); 
     response.EnsureSuccessStatusCode(); 
     var responseString = await response.Content.ReadAsStringAsync(); 
    } 

код работает, моя единственная проблема держит связь в живых за все время. может кто-нибудь сказать мне, как это сделать? Я читал о методе keepAlive(), может ли кто-нибудь показать мне, как его реализовать? спасибо

ответ

0

request.KeepAlive = true; Если я не ошибаюсь, я хотел бы прокомментировать, но мне не хватает репутации, извините за сообщение в качестве ответа, если кто-то может прокомментировать это предложение, я с удовольствием удалю свой ответ.

+0

Np, у меня была такая же проблема вчера, нет комментариев для комментариев. Я читал для .keepalive = true, моя проблема заключается в том, как использовать его в вызове HttpClient, couse я не могу делать httpClient.KeepAlive couse его не существует –

+0

Я думаю (не уверен), что с httpclient его по умолчанию установлено к истине, я сбивал с толку предложение '.keepalive' –

+0

Да, спасибо большое, но проблема, как я нашел сейчас, заключается в том, что у телефона с телефоном установлен тайм-аут по умолчанию, равный 60 секундам, и установка keepalive не меняет его , если кто-то знает, как изменить это значение, это решит многие мои проблемы. Спасибо, в любом случае –

Смежные вопросы