В ASP.NET Core 3.0 поддержка SPA работает через промежуточное ПО для указания на каталог (независимо от того, как вы его называете). Это делается путем внедрения промежуточного программного обеспечения в качестве последнего шага в методе настройки Startup:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
if (!env .IsDevelopment())
{
app.UseSpaStaticFiles();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller}/{action=Index}/{id?}");
});
app.UseSpa(spa =>
{
// To learn more about options for serving an Angular SPA from ASP.NET Core,
// see https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript: "start");
}
});
}
Для этого требуется два вызова: UseSpaStaticFiles
и UseSpa
. Эти вызовы настраивают возможность получать вызовы из сгенерированного index.html, который Angular-CLI создает для вас. В этом случае вы увидите, что во время разработки он запустит 'npm start' для вас;это часть того, как он запускает сборку разработки приложения Angular.
Это похоже на то, как промежуточное программное обеспечение работает и для React. В настоящее время нет поддержки других платформ (например, Vue, Backbone и т. Д.). Другое ограничение заключается в том, что хотя существует старая версия промежуточного программного обеспечения Spa, которая работала в ASP.NET Core 2.0, новая версия работает только с ASP.NET Core 2.1 и более поздними версиями.
Есть хорошая статья, объясняющаядругие методы, называемые Одностраничные приложения и ASP.NET Core 3.0
Надеемся, что это поможет любому, кто смешается с новыми функциями .net core 3.0 spa.