我正在尝试使用Angular 7
扩展名和使用.NET Core
的{{1}}来部署Kestrel
的应用程序。
我已经创建了角度应用程序,我已经FileProvider
了,然后将文件复制到了ng build
dist
内部。
启动
.NET
PS 我的 public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
string jsFolderName = "myroot";
string prodRoot =Path.Combine(AppDomain.CurrentDomain.BaseDirectory,jsFolderName);
string debugRoot =Path.Combine(Directory.GetCurrentDirectory(),jsFolderName);
var isDev=env.IsDevelopment();
DefaultFilesOptions options = new DefaultFilesOptions();
options.DefaultFileNames.Clear();
options.DefaultFileNames.Add("/myroot/index.html");
app.UseDefaultFiles(options);
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions() {
FileProvider = new PhysicalFileProvider(isDev?debugRoot:prodRoot),
RequestPath = "/app"
});
if (env.IsDevelopment()) {
app.UseDeveloperExceptionPage();
} else {
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseMvc();
}
文件夹就在项目的根目录中。
我不知道该如何填充myroot
应用程序angular
的首页(入口点)。
答案 0 :(得分:1)
@@ 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" }, };options.DefaultFileNames.Clear();options.DefaultFileNames.Add("/myroot/index.html");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="">