При запуске приложение лезет в var/www/.dotnet хотя такой папки не существует

Пытаюсь запустить сервис с приложением C#

[Unit]
Description=TgBot1

[Service]
WorkingDirectory=/var/www/TgBot1
ExecStart=/usr/bin/dotnet /var/www/TgBot1/TgBotGetRequest
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=www-data

[Install]
WantedBy=multi-user.target

Получаю ошибку

Jan 09 20:34:06 racknerd-046249 dotnet-example[4851]: System.UnauthorizedAccessException: Access to the path '/var/www/.dotnet' is denied.
Jan 09 20:34:06 racknerd-046249 dotnet-example[4851]:  ---> System.IO.IOException: Permission denied
Jan 09 20:34:06 racknerd-046249 dotnet-example[4851]:    --- End of inner exception stack trace ---
Jan 09 20:34:06 racknerd-046249 dotnet-example[4851]:    at System.IO.FileSystem.CreateDirectory(String fullPath, UnixFileMode unixCreateMode)
Jan 09 20:34:06 racknerd-046249 dotnet-example[4851]:    at System.IO.Directory.CreateDirectory(String path)
Jan 09 20:34:06 racknerd-046249 dotnet-example[4851]:    at Microsoft.Extensions.EnvironmentAbstractions.DirectoryWrapper.CreateDirectory(String path)
Jan 09 20:34:06 racknerd-046249 dotnet-example[4851]:    at Microsoft.DotNet.Configurer.FileSystemExtensions.<>c__DisplayClass0_0.<CreateIfNotExists>b__0()
Jan 09 20:34:06 racknerd-046249 dotnet-example[4851]:    at Microsoft.DotNet.Cli.Utils.FileAccessRetrier.RetryOnIOException(Action action)
Jan 09 20:34:06 racknerd-046249 dotnet-example[4851]:    at Microsoft.DotNet.Configurer.DotnetFirstTimeUseConfigurer.Configure()
Jan 09 20:34:06 racknerd-046249 dotnet-example[4851]:    at Microsoft.DotNet.Cli.Program.ConfigureDotNetForFirstTimeUse(IFirstTimeUseNoticeSentinel firstTimeUseNoticeSentinel, IAspNetCertificateSentinel aspNetCertificateSentinel, IFileS>

Приложение не запускается сразу выдает что ошибка где то /var/www/.dotnet , у меня нет такой папки.
Предполагаю что я как то не так запускаю сам файл TgBotGetRequest
В чем проблема?


Ответы (1 шт):

Автор решения: Uranus

Скорее всего проблема в том, что в настройках окружения вашего сервиса не задана переменная DOTNET_CLI_HOME. Поэтому .NET пытается создать необходимые файлы конфигурации в директории HOME, а у приложение права на запись только в директорию TgBot1.

Попробуйте явно задать DOTNET_CLI_HOME в описании сервиса:

Environment=DOTNET_CLI_HOME=/var/www/TgBot1
→ Ссылка