Po kilkugodzinnym wyszukiwaniu w Google nie mogę rozwiązać opisanego problemu. Mam nadzieję, że tutaj znajdzie rozwiązanieGetRequestStream losowo generuje wyjątek Timeout
Używam załączonego kodu podczas wywoływania usługi WCF na tym samym serwerze. Otrzymuję błąd Timeout losowo WebReq.GetRequestStream call()
Kiedy jestem wyboru netstat widzę, że połączenie pozostaje otwarte, więc prawdopodobnie jest jakiś problem, ale nie wiem jak go rozwiązać
//request inicialization
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
WebReq.Method = "POST";
WebReq.ContentType = "application/json; charset=utf-8";
WebReq.ContentLength = buffer.Length;
WebReq.Proxy = null;
WebReq.KeepAlive = false; //also tried with true
WebReq.AllowWriteStreamBuffering = false; //also tried with true
//this produces an error
using (Stream PostData = WebReq.GetRequestStream())
{
PostData.Write(buffer, 0, buffer.Length);
PostData.Close();
}
//open and read response
HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
Stream Answer = WebResp.GetResponseStream();
StreamReader _Answer = new StreamReader(Answer);
WebResp.Close();
//return string
return _Answer.ReadToEnd();
Limit czasu jest generowany głównie po około 10 sekundach bezczynności, ale także po pięciu lub więcej żądaniach z rzędu. Naprawdę nie mogę znaleźć wzorca.
Co może być nie tak z tym kodem? Czy istnieje inny (lepszy) sposób wywoływania usługi WCF?
Jest trochę lepiej, ale wciąż dostaję limity czasu. To naprawdę dziwne. Po pierwszym kliknięciu linku kliknij opcję Ładowanie i ładowanie, a jeśli w tym czasie klikniesz na to samo lub dowolne inne łącze na stronie, strona wczyta się w ciągu sekundy. Coś jest nie tak z tworzeniem połączenia. Jak sądzę, – AnzeR
nie zauważyłem, że jest na tej samej maszynie ... Zastanawiam się, czy kończy ci się wątek puli wątków - czy są one w tym samym procesie? –
Jestem całkiem nowy w programowaniu .net. Już od kilku lat programuję w PHP i nigdy nie zauważam takich problemów. Są takie rzeczy o wiele łatwiejsze. Więc nie jestem pewien, co miałeś na myśli, mówiąc "z wątków puli wątków"? Za pomocą jednego żądania tworzę dwa lub więcej tego żądania HTTP do usługi WCF, więc jest to przy tym samym procesie/żądaniu. Czy należy używać buforowania dla tych żądań? – AnzeR