ASP.NET 核心 - 防止提供某些文件类型的静态文件

ASP.NET Core - prevent static file of certain filetype from being served

我正在尝试配置 ASP.NET Core 以禁止在某些情况下提供 .map 文件。我试图将它从已知文件类型中删除,但这似乎并不能阻止它实际提供该文件。这就是我现在拥有的:

        app.UseSpa(spa =>
        {
            spa.Options.SourcePath = "Client";

            if (env.IsDevelopment())
            {
                var customPort = 60001;
                spa.UseProxyToSpaDevelopmentServer($"http://localhost:{customPort}");
                spa.UseReactDevelopmentServer("start");
            }
        });

        var contentTypeProvider = new FileExtensionContentTypeProvider();
        contentTypeProvider.Mappings.Remove(".map");
        app.UseSpaStaticFiles(new StaticFileOptions
        {
            ContentTypeProvider = contentTypeProvider
        });

使用此配置,我仍然可以在浏览 .map 文件时加载它们。我能做些什么来防止这种情况发生?

尝试使用 UseStaticFiles,在 app.UseSpa 调用之前,甚至在调用 app.UseMvc 之前(如果适用)。我假设 .map 用于 css/scss 映射。这不是一个特别的 SPA 文件,因此正在提供它。

var contentTypeProvider = new FileExtensionContentTypeProvider();
contentTypeProvider.Mappings.Remove(".map");

app.UseStaticFiles(new StaticFileOptions
{
    ContentTypeProvider = provider
});

app.UseMvc(); // if applicable

app.UseSpa(spa =>
{
    spa.Options.SourcePath = "Client";

    if (env.IsDevelopment())
    {
        var customPort = 60001;
        spa.UseProxyToSpaDevelopmentServer($"http://localhost:{customPort}");
        spa.UseReactDevelopmentServer("start");
    }
});

app.UseSpaStaticFiles();

希望对您有所帮助

这里的问题是我使用的是通过 Node.js 代理的本地开发设置。在这种情况下,代理会处理静态文件而不是 ASP.NET Core。我不得不将其切换并使用已发布的代码进行测试。