#c# #asp.net-core
#c# #asp.net-ядро
Вопрос:
У меня возникли некоторые проблемы при попытке получить доступ к папке за пределами корневой папки приложения с помощью asp.net приложение, развернутое в Linux.
В данный момент приложение развернуто (для целей тестирования) в /home/pbl/projects/pbl-web/
.
Я хочу получить доступ к папке внешнего жесткого диска, который я установил в системе, и он находится внутри /mnt/ExtDist/Data
.
Я использую PhysicalFileProvider со следующим путем: /mnt/ExtDist/Data
. Этот путь настраивается в app.settings.json
файле и извлекается через IConfiguration configuration
переменную.
Вот часть кода в Startup.cs
файле :
public void ConfigureServices(IServiceCollection services)
{
...
var imagePath = configuration.GetSection("PhotoManagementSettings")["ImagesFolderPath"];
var rootPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
this.imagePhysicalFileProvider = new PhysicalFileProvider(imagePath));
Я пробовал по-разному, но пока безуспешно:
- передача абсолютного пути
- передача относительного пути и объединение с переменной rootPath (см. Код выше).
У PhysicalFileProvider
меня появляется следующая ошибка:
Unhandled exception. System.IO.DirectoryNotFoundException: /mnt/ExtDist/Data/
Тестирование кода в Windows и предоставление ему абсолютного пути, например, «C:Test » работает нормально.
Итак, в Linux есть что-то странное, что выходит из строя, но я не могу понять, почему. Какие-нибудь подсказки?
Заранее спасибо, Паоло
Комментарии:
1. Не настолько хорошо знаком. NET в Linux, но при условии ASP.NET работает ли он под каким-либо профилем пользователя, имеет ли этот пользователь (по крайней мере) разрешение на чтение по этому пути?
2. папка имеет разрешение rx (чтение и выполнение), владелец папки другой, приложение выполняется пользователем «pbl», а владельцем папки является «www-data»