Путь содержит недопустимые знаки - VPS Windows Server 2012 r2

  • Автор темы Автор темы Meteorburn
  • Дата начала Дата начала

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 570
Реакции
632
Баллы
113
Приветствую!
У клиента наблюдается ошибка при записи данных в файл через метод File.WriteAllText
Ошибка: "Путь содержит недопустимые знаки"

Путь такого вида: string path = project.Directory + @"\myFolder\!_Temp\data.txt";
Запускается из: C:\Users\Admin\myTemplate

Создавали подобный шаблон из проджект мейкера на впс и всё хорошо, как в мейкере, так и в постере. Из купленного шаблона же ошибка.

Происходит это на Windows Server 2012 r2 (VPS, Zomro)

Клиент пробовал на своём ПК и у него всё ОК, на виртуалке же проблема.

В чём может быть загвоздка?

Google ответа не дал.
 
Попробуйте убрать ! знак в пути к файлу.
 
у меня такое было, когда в пути или файлах или еще где-то была кирилица, теперь я все задаю только на латинице
может какой-то список или еще что содержит кирилицу в шабе
 
Код:
Развернуть Свернуть Копировать
string path = Path.Combine(project.Directory, @"myFolder\!_Temp\data.txt");
Проблему не решило.

у меня такое было, когда в пути или файлах или еще где-то была кирилица, теперь я все задаю только на латинице
может какой-то список или еще что содержит кирилицу в шабе
Нет кириллицы.

скорее всего был конфликт двух слешей подряд. Тоже сталкивался с таким. Где-то норм работает, где-то нет
По всякому пробовал.

Дело в том, что только именно в этом C# кубике проблема.
Во всё проекте сохраняет по схожим путям нормально, а с этим проблема.
Честно говоря странная ошибка. Инфы помогающая решить проблему в гугле нет.

Вопрос открытый.
 
Проблему не решило.
А точно проблема именно в этом месте?

Сделай тестовый шаблон, который будет выполнять ТОЛЬКО операцию записи в указанный файл и проверь его у клиента на vps.
Чет сдается мне - проблема то вообще в другом месте)
 
А точно проблема именно в этом месте?

Сделай тестовый шаблон, который будет выполнять ТОЛЬКО операцию записи в указанный файл и проверь его у клиента на vps.
Чет сдается мне - проблема то вообще в другом месте)
Я взял код из кубика и вставил клиенту в ПМ. Всё сработало.

У себя в шаблоне для дебага перед нужной строкой вывел лог (строка записи в файл последняя).
В итоге получил лог и свою ошибку.


Вот строка в которой происходит ошибка.
C#:
Развернуть Свернуть Копировать
File.WriteAllText(filePath, arg1+";"+arg2+";"+arg3+";"+arg4+";"+arg5+";"+arg6+";"+arg7+";"+arg8+";"+arg9+";"+arg10+";"+arg11+";"+arg12+";"+arg13+";"+arg14+";"+arg15+";"+arg16+";"+arg17+";"+arg18+";"+arg19+";"+SIDCC+";"+arg20+";"+arg21, System.Text.Encoding.UTF8);

Может быть из за версии windows framework?
 
Последнее редактирование:
Вот строка в которой происходит ошибка.
Стоит попробовать убрать из второго аргумента эту множественную конкатенацию и писать в файл просто строку аля "test".

Может быть из за версии windows framework?
Маловероятно, но возможно.

И да, повторю - нужно протестить это всё в отдельном шаблоне на клиентской vps
 
Ну а ты сам путь пытался в лог вывести или в файл при ошибке через try catch?
Ребят, именно так и делал. try catch вставлял - уходило catch.
В лог выводил путь и он корректен.
 
Ну а ты сам путь пытался в лог вывести или в файл при ошибке через try catch?
Дельная мысль, согласен.

Перед записью в файл лучше положить и посмотреть что будет:
Код:
Развернуть Свернуть Копировать
project.SendInfoToLog(filePath, true);
 
Пока нашёл обходной путь - удалил кубик в шаблоне)))
Но буду искать решение.
 
  • Спасибо
Реакции: Meteorburn
Это не решение)))) Давай искать его, мы тут зря попкорном запаслись что ли?)
Давайте.

Тестировать на VPS у клиента сейчас нет возможности.
У 99% клиентов всё работает корректно в этом моменте.

В следующем обновлении попробую заменить на кубик без C#. Посмотрим...
 
Пробуй префикс \\?\C:\Users\Admin\myTemplate - это отключит синтаксический анализ пути.
 
Народ, подскажите как засунуть путь в переменную.
Нужно узнать дату изменения файла на другом компе в локальной сети.

Так все работает:
C#:
Развернуть Свернуть Копировать
//УЗНАТЬ ВРЕМЯ ИЗМЕНЕНИЯ (файла или каталога)
var time = new System.IO.FileInfo(@"\\SHARE\Media\EFIR").LastWriteTime;
return time;

Так тоже работает
C#:
Развернуть Свернуть Копировать
string patch = @"\\SHARE\Media\EFIR";
var time = new System.IO.FileInfo(patch).LastWriteTime;
return time;

А так выдает ошибку "Путь содержит недопустимые знаки"
C#:
Развернуть Свернуть Копировать
string patch = Convert.ToString(project.Variables["dir_file"].Value); 
var time = new System.IO.FileInfo(patch).LastWriteTime;
return time;
 
Народ, подскажите как засунуть путь в переменную.
Нужно узнать дату изменения файла на другом компе в локальной сети.

Решил.
В переменной нужно было прописывать путь вот так:
\\SHARE\Media\EFIR
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)