前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分享 OWIN 静态文件处理中间件

分享 OWIN 静态文件处理中间件

作者头像
beginor
发布2020-08-10 14:55:46
6660
发布2020-08-10 14:55:46
举报

分享 OWIN 静态文件处理中间件

分享一个自己写的 OWIN 静态文件处理中间件, 功能如下:

  • 支持标准的 OWIN 环境, 跨平台运行 (.Net, Mono) 为 OWIN 环境开发, 只依赖 Owin.dll , 和具体的 OWIN 宿主无关, 可以在 .Net 和 Mono 环境下运行;
  • 支持实体标签 (HTTP ETag) 实体标签 是HTTP协议提供的若干机制中的一种Web缓存验证机制,并且允许客户端进行缓存协商。这就使得缓存变得更加高效,而且节省带宽。(参考维基百科)
  • 支持 Html5 路径模式 支持 AngularJShtml5Mode 路径(其它前端框架应该也有类似的), 相信熟悉前端的同学对这个不陌生, Html5 路径模式的优点很多, 对搜索引擎友好, 对浏览器友好, 对用户也又好, 但是需要服务端配合。
  • 支持扩展, 可以自定义 MimeTypeProvider 和 ETagProvider 默认的 MimeTypeProvider 可以识别绝大多数静态文件的 mimetype , 如果不够用或者觉得默认的不爽, 可以使用自定义的 MimeTypeProvider , 只要实现接口 IMimeTypeProvider 即可。 默认的 ETagProvider 使用文件的 LastWriteTimeUtc.Ticks 做为 ETag 信息返回, 如果觉得不合适, 也可以使用自定义的 ETagProvider , 只要实现接口 IETagProvider 即可。

这个中间件通过 StaticFileMiddlewareOptions 类进行配置, 各个属性说明如下:

代码语言:javascript
复制
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; }
}

通过扩展方法

代码语言:javascript
复制
public static void UseStaticFile(this IAppBuilder app, StaticFileMiddlewareOptions options)

进行配置和使用, 示例如下:

代码语言:javascript
复制
app. UseStaticFile(new StaticFileMiddlewareOptions {
    RootDirectory = "../wwwroot",
    DefaultFile = "index.html",
    EnableETag = true,
    EnableHtml5LocationMode = true
});

获取方式当然是通过 NuGet 了, 输入下面的命令就可以了:

代码语言:javascript
复制
Install-Package Beginor.Owin.StaticFile

NuGet 包的地址是 https://www.nuget.org/packages/Beginor.Owin.StaticFile

示例程序源码: https://github.com/beginor/static-file-middleware-demo

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分享 OWIN 静态文件处理中间件
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档