Это должно помочь тебе
могу получить ядро asp.net для обслуживания файла index.html из моего wwwroot?
Причина, по которой я хочу это сделать, заключается в том, что я разрабатываю угловое приложение для 4, использующее угловой интерфейс командной строки, и оно отвечает за весь процесс сборки. Я настроил его для встраивания в каталог wwwroot моего основного проекта asp.net, но ядро asp.net не хочет его обслуживать.
Сначала я попытался вернуть html-файл через контроллер. Я попробовал этот маршрут:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}");
});
И тогда в контроллере я возвращаю HTML-файл, как это:
public IActionResult Index()
{
var webRoot = _env.WebRootPath;
var path = System.IO.Path.Combine(webRoot, "index.html");
return File(path, "text/html");
}
Это не сработало. Он возвратил исключение 404 not found и дал путь, но он дал правильный путь к файлу index.html (я вырезал и вставил его в проводник, и файл открылся).
Я также объявляю это при запуске:
app.UseStaticFiles();
app.UseDefaultFiles();
Затем я попытался удалить маршрут по умолчанию. Теперь я могу получить доступ к файлу index.html, но только если я введу имя файла, т.е.
локальный: 58420 / index.html
Если я пытаюсь получить доступ к корню домена без указанного «index.html», я получаю ошибку 404.
Как правильно ссылаться на index.html как страницу по умолчанию? Я предполагаю, что делать это с контроллера, вероятно, лучше, потому что тогда он будет совместим с угловой маршрутизацией без переписывания.