如何将 headers 添加到从 ServiceStack 的虚拟文件系统下载的文件中?

How do I add headers to files downloaded from ServiceStack's Virtual File System?

我正在利用 ServiceStack 的虚拟文件系统和 Cache-Controlcode-snippet on the wiki to minify content at startup-time. However, I don't see a way that I can add in custom headers, like those recommended,等等

我可能会使用全局响应过滤器,但 a) 我不认为它们可以处理 "static" 文件,并且 b) 需要一些粗糙的响应逻辑。

如何将 headers 添加到 ServiceStack 中 IVirtualPathProvider 提供的内容?

如果文件自上次请求后未被修改,则静态文件由 StaticFileHandler. It already adds Cache-Control and LastModified headers and will return a 304 提供。

InMemoryVirtualPathProvider 的最新版本是 rewritten to maintain consistent behavior with the new S3VirtualPathProvider,现在包含 StaticFileHandler 可以利用的每个文件的 LastModified 时间戳。

此更改适用于现在 available on MyGet 的 v4.0.47。

使用自定义 StaticFilesHandler ResponseFilter 添加 headers

您仍然可以通过注册 StaticFileHandler.ResponseFilter 添加自己的自定义 HTTP 响应 headers,例如:

StaticFileHandler.ResponseFilter = (req,res,file) => {
    res.AddHeader(headerName, headerValue);

    //res.Close(); Closing the Response will stop further processing
};