如何在.net核心角度SPA模板中检测页面刷新?

时间:2018-11-16 04:53:27

标签: .net-core asp.net-core-mvc angular6 single-page-application

我使用.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

1 个答案:

答案 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;
            });
        });