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

时间:2019-05-13 21:56:22

标签: javascript asp.net-core webpack source-maps asp.net-core-2.2

在某些情况下,我试图将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文件时,我仍然能够加载它们。我该怎么做才能防止这种情况?

2 个答案:

答案 0 :(得分:0)

请改为在致电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();

我希望这对您有帮助

答案 1 :(得分:0)

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