c# - asp.net core 上的静态文件

标签 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文件。我如何只允许下载而不是提供服务?

最佳答案

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

如果您所指的其他程序直接联系服务器获取这些文件,那应该没有关系。例如使用 HttpClient,您根本不必更改静态文件中间件。

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

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

关于c# - asp.net core 上的静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46307926/

相关文章:

asp.net - DbSet<> 不包含 'ToListAsync()' 的定义,尽管我将 .NET 3.1 与 EF Core 一起使用

内置服务器的python不加载css

node.js - 什么是更好的方法 : serving static files with Express or nginx?

c# - 如何在不将 Excel 文件存储在任何地方的情况下读取 Excel 文件并将其数据填充到 MVC 的网格中?

c# - RabbitMQ 向所有消费者广播事件

asp.net-core - 中间件检查 Controller 方法的注释

asp.net-mvc - 不记名代币和 CSRF

java - 如何在 java Google App Engine 中将内容处置设置为内联静态文件

c# - 反射测试未显示预期数字

c# - 在 C# 中使用 Excel 双值