我使用.net核心MVC SPA模板进行了项目设置。加载该应用程序后,会将angular spa加载到MVC中。
我的启动配置包含以下代码以加载SPA。
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");
}
});
一旦SPA被加载,在MVC站点上就不会与服务器端联系。但是,当重新加载页面时,我想拦截此调用并使用HTTPRequest和HTTPResponse进行操作。我该如何实现?我在MVC项目中没有任何控制器。
我的项目结构如下。
WEB
-wwwroot
-ClientApp ---> Angular spa
-控制器--->空
-页--->空
-startup.cs
-program.cs
答案 0 :(得分:1)
要在客户端和服务器之间拦截请求,可以尝试ASP.NET Core Middleware。来自客户端的所有请求将由middleware
处理。
简单的代码如下:
app.Use((context, next) =>
{
Console.WriteLine(context.Request.Path);
return next.Invoke();
});
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");
}
});
更新
app.Map("/css/site1.css", map => {
map.Run(context => {
context.Response.Redirect("/css/site2.css");
return Task.CompletedTask;
});
});