asp.net核心上的静态文件

时间:2017-09-19 18:57:11

标签: c# asp.net-core static-files

我正在尝试在ASP.NET Core 2.0网络应用程序上启用静态文件。我在一个名为updater的文件夹中有一堆文件,它位于wwwroot文件夹之外。为了允许访问它们,我添加了

app.UseStaticFiles(new StaticFileOptions()
{
    ServeUnknownFileTypes = true,
    FileProvider = new PhysicalFileProvider(
        Path.Combine(Directory.GetCurrentDirectory(), @"TestUpdater")
    ),
    RequestPath = new PathString("/Updater")
});

这使得不同的程序可以通过调用url来获取其文件。问题是所有文件都需要下载而不是服务。有一个txt文件。如何仅允许下载而不是服务?

1 个答案:

答案 0 :(得分:3)

您所描述的“提供”和“下载”文件之间的唯一区别是,在一个实例中,浏览器将文件下载到临时位置并在窗口中显示(内联),而另一个浏览器将询问用户将文件保存到永久位置(附件)的位置。

如果您所指的其他程序直接与服务器联系以获取这些文件,则无关紧要。例如,使用HttpClient,您根本不必更改静态文件中间件。

如果您希望浏览器提示用户保存文件,即使它是可识别的内容类型,请尝试将Content-Disposition响应标头设置为“attachment”。要从Startup.cs配置执行此操作,请修改StaticFileOptions以使用以下内容:

new StaticFileOptions()
{
    OnPrepareResponse = context =>
    {
        context.Context.Response.Headers["Content-Disposition"] = "attachment";
    }
}