【问题标题】:How to detect page refresh in .net core angular SPA template?如何在.net core angular SPA模板中检测页面刷新?
【发布时间】:2018-11-16 04:53:27
【问题描述】:

我有 .net core 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 项目中没有任何控制器。

我的项目结构是这样的。

网络
- wwwroot
- ClientApp ---> Angular spa
- 控制器 ---> 空
- 页面 ---> 空
- 启动.cs
- 程序.cs

【问题讨论】:

  • 我能问一下你想要达到什么目的吗?为什么需要检测页面重新加载?
  • 我们需要在页面加载时刷新一些 CSS。这个 css 将由外部工具设计,所以我们想在页面加载时设置这个 css,然后 SPA 可以接管并按原样呈现样式。如果服务器上的 css 发生了变化,那么在页面加载时我们可以再次放置新的 css
  • when the page is reloaded 是什么意思?按F5?

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


【解决方案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;
            });
        });

【讨论】:

  • 我可以通过这种方式拦截,但我可以通过 app.use() { } 在角度页面内插入 CSS 吗?
  • @Zeus 插入css是什么意思?如果要更改css url,可以尝试URL Rewriting Middleware in ASP.NET Core,但不建议这样做会影响性能。您应该更改页面中的css url而不是拦截reuqest。
  • 需要按需更新css,即whitelabel
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 2018-05-22
  • 2018-02-16
  • 1970-01-01
  • 2020-02-18
  • 2020-05-12
  • 2018-02-01
相关资源
最近更新 更多