В моей службе Windows есть метод, который будет читать файл JSON (который я создал вручную), а затем обрабатывать его. Проблема в том, что служба запускается, но в тот момент, когда ей нужно проверить, существует ли файл (по заданному пути), служба просто застревает в строке «если» (ошибок не возникает, ничего). Я решил протестировать тот же метод в проекте консоли Windows, и он отлично работает (проверяет, существует ли файл и даже получает содержимое json). Ниже следует описанный ранее метод:
//
private string ReadJsonFile()
{
string jsonResponse = String.Empty;
try
{
string networkPath = ConfigurationManager.AppSettings.Get("networkPath");
string fileName = ConfigurationManager.AppSettings.Get("jsonFileName");
new DoLog("Program has executed this line");
if (File.Exists(networkPath + fileName))
// the moment the program hits the above line, it wont continue
{
new DoLog("Program has entered the IF clause");
jsonResponse = File.ReadAllText(networkPath + fileName);
}
}
catch (Exception e)
{
jsonResponse = string.Empty;
new DoLog(e.Message);
}
return jsonResponse;
}
Ниже следует мой файл app.config
<add key = "networkPath" value = "C:\TestFlightImporting\"/>
<add key = "jsonFileName" value = "retest.json"/>
Как указывалось ранее, метод «ReadJsonFile ()» отлично работает в консольном приложении, но в тот момент, когда я запускаю его в службе Windows, он застревает в строке «if (File.Exists ())». Может ли кто-нибудь помочь мне с этой странной проблемой? заранее спасибо
P.S: Единственная задача DoLog - записывать в файл журнала, что происходит в программе.
@Amy Я запускал службу как администратор, но должен отметить, что мой компьютер находится в доменной сети. Другими словами, я запускал службу как администратор (щелкните правой кнопкой мыши службу -> свойства -> щелкните вкладку «Вход в систему») или даже с моей учетной записью DOmain. Оба они вызывают одну и ту же проблему .. Я подозреваю, что проблема заключается в том, что мой компьютер находится в доменной сети.
Вы уверены, что файл не открыт? Проверьте диспетчер задач.
@ slaphshot33324: да, проверял несколько раз
Попробуйте перезагрузить компьютер, на котором находится файл.
Когда кажется, что что-то не имеет смысла, начните оспаривать то, что, как нам кажется, мы знаем. Ключи конфигурации в вопросе являются частью конфигурации служб? Зарегистрируйте их из своего кода. Пути в вопросе пути действительный используются как службой, так и вашим локальным сервером?
@Amy: да, с помощью класса ведения журнала я смог проверить правильность ключей и пути. Я решил сделать что-то из коробки, а именно разрешить запуск службы от имени администратора (щелкните правой кнопкой мыши на .exe -> свойства -> вкладка «Совместимость» -> «установите» флажок «запустить эту программу как администратор ".. что сразу решило вопрос





От имени какого пользователя работает служба Windows? Вероятно, у него нет доступа.