Asp.net-Core
Asp.net core 2.1 - 如何服務多個角度應用程序?
我正在嘗試從我的 .net 核心服務中提供 2 個 Angular 應用程序,如下所示:
public void ConfigureServices(IServiceCollection services) { ... services.AddSpaStaticFiles(configuration => { configuration.RootPath = "wwwroot/app"; }); services.AddSpaStaticFiles(configuration => { configuration.RootPath = "wwwroot/admin"; }); ... } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { ... app.UseSpaStaticFiles(new StaticFileOptions { OnPrepareResponse = ctx => { ctx.Context.Response.Headers.Append("Cache-Control", "public,max-age=0"); } }); app.UseMvc(); app.Map("/app", client => { client.UseSpa(spa => { spa.Options.SourcePath = "wwwroot/app"; }); }).Map("/admin", admin => { admin.UseSpa(spa => { spa.Options.SourcePath = "wwwroot/admin"; }); }); }在文件系統中,我只有
dist這些應用程序的輸出(因為它們是由另一個團隊開發的)。所以它看起來像這樣:
- C:$$ MY PROJECT PATH $$\wwwroot\app
- C:$$ MY PROJECT PATH $$\ wwwroot \ 管理員
但由於某種原因,管理應用程序可以工作,而該應用程序不能工作,而且它不支持預設頁面,所以我需要輸入帶有
/index.html.關於如何解決這個問題的任何想法?
好吧,我終於解決了它,它的工作原理是這樣的:
public void ConfigureServices(IServiceCollection services) { ... services.AddSpaStaticFiles(); ... } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { ... app.UseSpaStaticFiles(new StaticFileOptions { FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot")) }); app.UseMvc(); app.Map("/app", client => { client.UseSpa(spa => { spa.Options.SourcePath = "wwwroot/app"; spa.Options.DefaultPageStaticFileOptions = new StaticFileOptions { FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/app")) }; }); }).Map("/admin", admin => { admin.UseSpa(spa => { spa.Options.SourcePath = "wwwroot/admin"; spa.Options.DefaultPageStaticFileOptions = new StaticFileOptions { FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/admin")) }; }); }); }另外,不要忘記進入
index.html每個應用程序的文件並base相應地設置標籤,如下所示://for the client application: <base href="/app/"> //for the admin application <base href="/admin/">