Неверный http запрос
От: alex1010  
Дата: 17.11.15 09:30
Оценка:
c#
вот такой код
recordingUrl = "http://google.com";

    CredentialCache credentialCache = new CredentialCache();
    credentialCache.Add(
    new Uri( recordingUrl ),
        "Basic",               // authentication type      "Basic"  "Digest"
        new NetworkCredential( "", "" )
    );
    req1 = ( HttpWebRequest )WebRequest.Create( recordingUrl );
    req1.Method = "GET";
    req1.Credentials = credentialCache;
    req1.ReadWriteTimeout = 15000;
    req1.Timeout = 15000;

    resp1 = req1.GetResponse();


вызов два раза проходит, на третий — всегда отваливается по тайм-ауту на GetResponse(), сервер не отвечает.
При этом не важно — google или специализированный сервер, поведение у обоих одинаковое.

Что делать?
Re: Неверный http запрос
От: vmpire Россия  
Дата: 17.11.15 09:49
Оценка: 25 (3) +2
Здравствуйте, alex1010, Вы писали:

A>вызов два раза проходит, на третий — всегда отваливается по тайм-ауту на GetResponse(), сервер не отвечает.

A>При этом не важно — google или специализированный сервер, поведение у обоих одинаковое.

A>Что делать?

Попробуйте освобождать response сразу после использования (Close() или Dispose()), он IDisposable.
Если этого не сделать — коннекшн не возвращается в пул, а там их по умолчанию как раз два.
Re[2]: Неверный http запрос
От: alex1010  
Дата: 17.11.15 10:03
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Здравствуйте, alex1010, Вы писали:


A>>вызов два раза проходит, на третий — всегда отваливается по тайм-ауту на GetResponse(), сервер не отвечает.

A>>При этом не важно — google или специализированный сервер, поведение у обоих одинаковое.

A>>Что делать?

V>Попробуйте освобождать response сразу после использования (Close() или Dispose()), он IDisposable.
V>Если этого не сделать — коннекшн не возвращается в пул, а там их по умолчанию как раз два.

упс, проверил, действительно для гугла все прокатывает!
Но я гугл поставил для проверки бага, а так у меня работа с видео-сервером сони, там надо держать коннект, а Close это его закрытие.
Можно увеличить пул коннектов до 16-20?
Re[3]: Неверный http запрос
От: Sinix  
Дата: 17.11.15 10:12
Оценка: 7 (2)
Здравствуйте, alex1010, Вы писали:

A>Можно увеличить пул коннектов до 16-20?


ServicePointManager.DefaultConnectionLimit ?
Также см тут.
Re[3]: Неверный http запрос
От: vmpire Россия  
Дата: 17.11.15 11:26
Оценка: 5 (1)
Здравствуйте, alex1010, Вы писали:

A>упс, проверил, действительно для гугла все прокатывает!

A>Но я гугл поставил для проверки бага, а так у меня работа с видео-сервером сони, там надо держать коннект, а Close это его закрытие.
A>Можно увеличить пул коннектов до 16-20?

В конфиге:
<configuration> 
 <system.net> 
  <connectionManagement> 
   <add address="*" maxconnection="100" /> 
  </connectionManagement> 
 </system.net> 
</configuration>


Или через класс ServicePointManager можно настройки покрутить.
Re[4]: Неверный http запрос
От: alex1010  
Дата: 17.11.15 11:52
Оценка: 19 (1)
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, alex1010, Вы писали:


A>>Можно увеличить пул коннектов до 16-20?


S>ServicePointManager.DefaultConnectionLimit ?

S>Также см тут.

Вот так помогло!

WebResponse resp1 = req1.GetResponse();

req1.ServicePoint.ConnectionLimit = 15;
Re[4]: Неверный http запрос
От: alex1010  
Дата: 17.11.15 12:05
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Или через класс ServicePointManager можно настройки покрутить.


если перед созданием HttpWebRequest делать так —
ServicePoint mySP = ServicePointManager.FindServicePoint( new Uri( recordingUrl ) );
mySP.ConnectionLimit = 15;


это не срабатывает.
Только как привел выше — изменять ServicePoint полученного после Response().
Re[5]: Неверный http запрос
От: vmpire Россия  
Дата: 17.11.15 12:49
Оценка: 4 (1)
Здравствуйте, alex1010, Вы писали:

V>>Или через класс ServicePointManager можно настройки покрутить.


A>если перед созданием HttpWebRequest делать так —

A>
A>ServicePoint mySP = ServicePointManager.FindServicePoint( new Uri( recordingUrl ) );
A>mySP.ConnectionLimit = 15;
A>


A>это не срабатывает.

Там статическое свойство есть: DefaultConnectionLimit. Должно работать, если установить перед созданием.
Re[6]: Неверный http запрос
От: alex1010  
Дата: 17.11.15 15:57
Оценка:
Здравствуйте, vmpire, Вы писали:

A>>это не срабатывает.

V>Там статическое свойство есть: DefaultConnectionLimit. Должно работать, если установить перед созданием.

да, так тоже работает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.