Наличие у контроллера возврата файла - это нечто иное, чем включение статических файлов или статических файлов spa.
Статические файлы:
Из Статических файлов в ASP.NET Core :
Статические файлы хранятся в корневом веб-каталоге проекта. Каталог по умолчанию / wwwroot. (...) Веб-хост приложения должен быть осведомлен о корневом каталоге содержимого. (...) Статические файлы доступны через путь относительно корня сети. (...) Формат URI для доступа к файлу в подпапке: http: ///subfolder/.
, с помощью app.UseStaticFiles()
любой сможет получать файлы из вашего каталога wwwroot.
Это может удовлетворить ваши условия. Если это не так, потому что вы можете добавить аутентификацию для получения файла или вернуть другой файл по тому же маршруту на основе параметра запроса или текущего пользователя, или вам нужно сгенерировать файл, вам нужно вернуть файл из acontroller.
Возврат файла из контроллера:
документации по Microsoft не много, но есть много вопросов и ответов по stackoverflow.
Checkout:
public ActionResult DownloadFile()
{
string filename = "File.pdf";
string filepath = AppDomain.CurrentDomain.BaseDirectory + "/Path/To/File/" + filename;
byte[] filedata = System.IO.File.ReadAllBytes(filepath);
string contentType = MimeMapping.GetMimeMapping(filepath);
var cd = new System.Net.Mime.ContentDisposition
{
FileName = filename,
Inline = true,
};
Response.AppendHeader("Content-Disposition", cd.ToString());
return File(filedata, contentType);
}
Одной из ваших проблем также является поиск файла, который вы хотите вернуть. Вы можете использовать Server.MapPath("~/filename.ext")
для этого. Убедитесь, что ваш файл включен в ваш скомпилированный проект, выбрав «Копировать, если новее» или «Копировать всегда» в его свойствах в «Копировать в выходной каталог».