Как предлагает @ Simonare в комментарии, лучший способ - использовать официальный шаблон Angular.
Но если вы хотите обслуживать только статические файлы, вы можете сделать следующее::
- Настройка
DefaultFilesOptions
с FileProvider
и RequestPath
.
var fileProvider = new PhysicalFileProvider(isDev?debugRoot:prodRoot);
DefaultFilesOptions options = new DefaultFilesOptions(){
RequestPath = "/app", // to process request to `/app`
FileProvider = fileProvider, // to check files under `myroot/**/**`
DefaultFileNames = new List { "index.html" },
};
<strike>options.DefaultFileNames.Clear();</strike>
<strike>options.DefaultFileNames.Add("/myroot/index.html");</strike>
app.UseDefaultFiles(options);
// serve static files
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions() {
RequestPath = "/app",
FileProvider = fileProvider,
});
Поскольку путь к приложению https://yourhost:port/app
, вам также необходимо изменить базовый путь в пределах index.html
, чтобы браузер загружал все ресурсы (например, js, css, img).файлы) относительно текущего пути.Исходная база /src/index.html
составляет /
:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>App</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
<app-root>Loading...</app-root>
</body>
</html>
Обратите внимание, нам нужно:
- изменить
<base href="/">
на <base href="/app">
- илиизмените базу на пустую строку:
<base href="">
- или удалите эту строку