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

Meteorburn

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

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

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

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

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

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

Google ответа не дал.
 

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
556
Баллы
93
Попробуйте убрать ! знак в пути к файлу.
 

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113

backoff

Client
Регистрация
20.04.2015
Сообщения
6 055
Благодарностей
6 483
Баллы
113
у меня такое было, когда в пути или файлах или еще где-то была кирилица, теперь я все задаю только на латинице
может какой-то список или еще что содержит кирилицу в шабе
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
скорее всего был конфликт двух слешей подряд. Тоже сталкивался с таким. Где-то норм работает, где-то нет
 
  • Спасибо
Реакции: Lord_Alfred

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113
Код:
string path = Path.Combine(project.Directory, @"myFolder\!_Temp\data.txt");
Проблему не решило.

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

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

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

Вопрос открытый.
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
Проблему не решило.
А точно проблема именно в этом месте?

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

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113
А точно проблема именно в этом месте?

Сделай тестовый шаблон, который будет выполнять ТОЛЬКО операцию записи в указанный файл и проверь его у клиента на 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?
 
Последнее редактирование:

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Ну а ты сам путь пытался в лог вывести или в файл при ошибке через try catch?
 
  • Спасибо
Реакции: Lord_Alfred

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
Вот строка в которой происходит ошибка.
Стоит попробовать убрать из второго аргумента эту множественную конкатенацию и писать в файл просто строку аля "test".

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

И да, повторю - нужно протестить это всё в отдельном шаблоне на клиентской vps
 

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113
Ну а ты сам путь пытался в лог вывести или в файл при ошибке через try catch?
Ребят, именно так и делал. try catch вставлял - уходило catch.
В лог выводил путь и он корректен.
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
Ну а ты сам путь пытался в лог вывести или в файл при ошибке через try catch?
Дельная мысль, согласен.

Перед записью в файл лучше положить и посмотреть что будет:
Код:
project.SendInfoToLog(filePath, true);
 

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113
Пока нашёл обходной путь - удалил кубик в шаблоне)))
Но буду искать решение.
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
  • Спасибо
Реакции: Meteorburn

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113
Это не решение)))) Давай искать его, мы тут зря попкорном запаслись что ли?)
Давайте.

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

В следующем обновлении попробую заменить на кубик без C#. Посмотрим...
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Ну мб прокатит создать новый и вручную прописать эту часть кода
 
  • Спасибо
Реакции: Meteorburn

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 371
Баллы
113
Пробуй префикс \\?\C:\Users\Admin\myTemplate - это отключит синтаксический анализ пути.
 

alexsandroid

Client
Регистрация
06.08.2018
Сообщения
93
Благодарностей
28
Баллы
18
Народ, подскажите как засунуть путь в переменную.
Нужно узнать дату изменения файла на другом компе в локальной сети.

Так все работает:
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;
 

alexsandroid

Client
Регистрация
06.08.2018
Сообщения
93
Благодарностей
28
Баллы
18
Народ, подскажите как засунуть путь в переменную.
Нужно узнать дату изменения файла на другом компе в локальной сети.
Решил.
В переменной нужно было прописывать путь вот так:
\\SHARE\Media\EFIR
 

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