У меня есть следующий метод действия (как предложено от Vague).
public IActionResult Document(string name)
{
try
{
var filepath = $"wwwroot/{name}";
byte[] fileBytes = System.IO.File.ReadAllBytes(filepath);
return File(fileBytes, "application/x-msdownload", name);
}
catch (Exception exception) { return Ok(exception.Message) }
}
Когда я выполняю локально, я получаю файлы, как и ожидалось. Однако при загрузке в Azure я получаю сообщение об ошибке, что путь неверный.
Could not find a part of the path 'D:\Windows\system32\wwwroot\doc02.doc'.
Предполагая, что речь идет о неправильном пути, я пробовал все комбинации префиксов с «~», «.», «./» и т. д., которые я мог придумать. Через несколько часов я понимаю, что это страус (можно пробовать и пробовать, но он не полетит).
Что я могу упустить?
Ставлю файлы "всегда загружать", конечно. И я проверил, введя URL-адрес указанных файлов (они находятся в корневом каталоге, прямо рядом с логотип.gif).
@Joelty Нет, я уверен, что нет. Но кажется, что нужно много работать, чтобы защитить их лучше. Если у вас нет предложения о том, как...
Я сохраняю файл где-то на диске (вне приложения), сохраняя его путь в БД и идентифицируя его с помощью идентификатора (Guid), например, localhost:5000/download/{guid}, который затем проверяет разрешения и всю бизнес-логику, а затем достигает файла с диска с путем из БД.
@Joelty Спасибо за подсказку. Я сделаю это. :)





Как насчет хранения всего пути в БД? или сохранить их в месте, например
D:\AppFiles\, если это возможно. Кстати, вы уверены, что хотите сохранитьdocsв папке статических файлов?