Поэтому в настоящее время я использую системы HttpWebRequest и HttpWebResponse для отправки информации в документ php, а при использовании другой системы использую Streamreader для получения информации из другого документа php. Эти php файлы имеют дело со статистикой из ледяного потока.
Система Запрос / Ответ может быть вызвана из определенных команд, посылая разную информацию с разными экземплярами системы через мой код. Код настраивается следующим образом, а затем изменяется для различных команд:
string newURL = "setStat.php?type=type1&n=" + stats;
HttpWebRequest wrequest = (HttpWebRequest)WebRequest.Create(newURL);
HttpWebResponse wresponse = (HttpWebResponse)wrequest.GetResponse();
Stream resStream = wresponse.GetResponseStream();
Система Streamreader вызывается каждый раз, когда песня из потока Icecast изменяется, чтобы получить новую статистику из текущей песни. Код настроен так:
WebClient web = new WebClient();
using (StreamReader status = new StreamReader(web.OpenRead("icecast.php")))
{
string line = string.Empty;
while ((line = status.ReadLine()) != null)
{
...
}
status.Close();
}
Теперь я использую, чтобы получить сообщение об ошибке «System.Net.WebException: истекло время ожидания операции» после того, как было использовано много команд с запросом / ответом, и эта ошибка попадет в мою строку Streamreader:
using (StreamReader status = new StreamReader(web.OpenRead("icecast.php")))
Затем прошлой ночью я нашел то, что, как я думал, было моим решением этой проблемы с тайм-аутом операции. Я столкнулся с другим вопросом, который предложил использовать:
System.Net.ServicePointManager.DefaultConnectionLimit
Поэтому я добавил это к своему коду в начале моей функции инициализации и установил его равным 10, я подумал, что это будет излишним и будет работать, так как я полагал, что мне действительно нужны только 2, насколько я понял. Казалось, моя проблема исчезла, пока несколько часов назад она не вернулась. Я начинаю задаваться вопросом, не хватает ли мне просто соединений, и мой лимит вызывает это, или есть ли лучший способ заставить эти две отдельные системы работать, не прерывая друг друга. Любые предложения будут высоко ценится.
Задача ещё не решена.
Других решений пока нет …