Неполный ответ от сервера. Возможно ли? - C#
Формулировка задачи:
Доброго времени суток форумчанам.
У меня возникла такая странная ситуация:
Есть программа, которая сохраняет файл с web-сервиса.
Если ручками запускать - всё работает без нареканий. Но если поставить отложенный запуск (ночной), то по утру в файле оказывается всего одна строка (обычно 20-30). Я первый раз работаю с WebRequest'om, да и вообще эту web-кухню плохо понимаю, потому не пойму, в чём может быть проблема? Сталкивался ли кто с подобным? Могу ли я поток файла получить "не до конца" и раньше времени корректно закрыться и записать не полный файл? Или подобное поведение означает что сервис отдаёт однострочный файл и никак иначе?
try
{
response = GetRequestStream();
if (response == null)
{
LogManager.WriteMessage("Не получен ответ от сайта. Получение данных не возможно.");
return;
}
Stream s = response.GetResponseStream();
if (s == null)
{
LogManager.WriteMessage("Не получен поток файла от сайта. Получение данных не возможно.");
return;
}
sr = new StreamReader(s);
string totalStr = sr.ReadToEnd();
if (string.IsNullOrWhiteSpace(totalStr))
LogManager.WriteMessage("В полученом файле не найдено значимых данных. Запись файла не производилась.");
m_manager.RemoveFile();
sw = new StreamWriter(m_manager.GetFileName());
sw.Write(totalStr);
if (ReadRatings(totalStr, currencies))
LogManager.WriteMessage("Статистика с сайта считана и сохранена/обновлена");
else
LogManager.WriteMessage("В файле не найдено данных для записи");
}Решение задачи: «Неполный ответ от сервера. Возможно ли?»
textual
Листинг программы
public string GetFileName(FileType fType)
{
switch (fType)
{
case FileType.First:
return string.Concat(m_dataFolder, "", DateTime.Now.ToString("yyyy_MM_dd"), "_FirstSite.xml");
case FileType.Second:
return string.Concat(m_logFolder, "", DateTime.Now.ToString("yyyy_MM_dd"), "_Log.txt");
case FileType.Third:
return string.Concat(m_dataFolder, "", DateTime.Now.ToString("yyyy_MM_dd"), "_SecondSite.csv");
default:
return string.Empty;
}
}