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

时间:2015-11-09 06:09:50

标签: http servicestack cache-control

我正在利用ServiceStack的虚拟文件系统和code-snippet on the wiki来缩短启动时的内容。但是,我没有看到可以在自定义标头中添加的方式,例如Cache-Control IVirtualPathProvider等。

我可以使用全球响应过滤器,但是a)我不认为他们使用"静态"文件和b)需要一些粗糙的响应逻辑。

如何在ServiceStack中为{{1}}提供的内容添加标题?

1 个答案:

答案 0 :(得分:2)

静态文件由StaticFileHandler提供。它已添加Cache-Control and LastModified headers,如果文件自上次请求后未被修改,则会return a 304

最新版本的InMemoryVirtualPathProviderrewritten维持consistent behavior with the new S3VirtualPathProvider,现在包含StaticFileHandler可以利用的每个文件的LastModified时间戳。

此更改可从v4.0.47获得,现在为available on MyGet

使用Custom StaticFilesHandler ResponseFilter

添加标头

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

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

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