分享一个自己写的 OWIN 静态文件处理中间件, 功能如下:
Owin.dll
, 和具体的 OWIN 宿主无关, 可以在 .Net 和 Mono 环境下运行;
MimeTypeProvider
可以识别绝大多数静态文件的 mimetype , 如果不够用或者觉得默认的不爽, 可以使用自定义的 MimeTypeProvider , 只要实现接口 IMimeTypeProvider
即可。
默认的 ETagProvider
使用文件的 LastWriteTimeUtc.Ticks
做为 ETag
信息返回, 如果觉得不合适, 也可以使用自定义的 ETagProvider , 只要实现接口 IETagProvider
即可。
这个中间件通过 StaticFileMiddlewareOptions
类进行配置, 各个属性说明如下:
public class StaticFileMiddlewareOptions {
// 默认的根目录
public string RootDirectory { get; set; } = "wwwroot";
// 默认文件名
public string DefaultFile { get; set; } = "index.html";
// 是否适用 ETag , 默认值为 true
public bool EnableETag { get; set; } = true;
// 是否适用 Html5 路径模式, 默认值为 false
public bool EnableHtml5LocationMode { get; set; } = false;
// 自定义的 MimeTypeProvider , 如果没有赋值, 则使用默认的
public IMimeTypeProvider MimeTypeProvider { get; set; }
// 自定义 ETagProvider , 当 EnableETag 为 true 时, 会检查这个
// 属性, 如果没有赋值, 则使用默认的
public IETagProvider ETagProvider { get; set; }
}
通过扩展方法
public static void UseStaticFile(this IAppBuilder app, StaticFileMiddlewareOptions options)
进行配置和使用, 示例如下:
app. UseStaticFile(new StaticFileMiddlewareOptions {
RootDirectory = "../wwwroot",
DefaultFile = "index.html",
EnableETag = true,
EnableHtml5LocationMode = true
});
获取方式当然是通过 NuGet 了, 输入下面的命令就可以了:
Install-Package Beginor.Owin.StaticFile
NuGet 包的地址是 https://www.nuget.org/packages/Beginor.Owin.StaticFile
示例程序源码: https://github.com/beginor/static-file-middleware-demo