【问题标题】:Unable to set HTTP header in asp.net core for the SPA files无法在 asp.net 核心中为 SPA 文件设置 HTTP 标头
【发布时间】:2019-01-30 16:53:00
【问题描述】:

在直接从命令行运行(使用 Kestrel)时,在 ASP.Net core 2.2 中提供属于 SPA 应用程序一部分的文件时,希望设置 HTTP 标头。

按照https://github.com/aspnet/AspNetCore/issues/3147#issuecomment-435617378 的说明,我根本无法触发StaticFileOptions.OnPrepareResponse 事件。没有设置标头,甚至没有触发断点。

Statup.Configure() 看起来像这样:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
    }

    app.UseStaticFiles();
    app.UseSpaStaticFiles(new StaticFileOptions
    {
        OnPrepareResponse = ctx =>
        {
            ctx.Context.Response.Headers.Add("Hello", "World"); // Never triggers
        }
    });

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller}/{action=Index}/{id?}");
    });

    app.UseSpa(spa =>
    {
        spa.Options.SourcePath = "ClientApp";
        spa.Options.DefaultPageStaticFileOptions = new StaticFileOptions
        {
            OnPrepareResponse = ctx =>
            {
                ctx.Context.Response.Headers.Add("Hello", "World"); // Never triggers
            }
        };

        if (env.IsDevelopment())
        {
            spa.UseAngularCliServer(npmScript: "start");
        }
    });
}

【问题讨论】:

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


    【解决方案1】:

    事实证明,在运行 Angular 开发服务器时事件不会触发。这些行是罪魁祸首:

    if (env.IsDevelopment())
    {
        spa.UseAngularCliServer(npmScript: "start");
    }
    

    评论它或更改 ASPNETCORE_ENVIRONMENT 环境变量就可以了。

    【讨论】:

      猜你喜欢
      • 2019-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 1970-01-01
      • 2017-08-24
      相关资源
      最近更新 更多