我已经弄清楚如何绕过ServiceStack来实现我自己的HTTP处理程序来作为下载提供文件,并且它工作得很好。然而,我想知道,现在我在服务堆栈之外,如果我能以某种方式访问缓存。
下面是我如何注册我的自定义IHTTPHandler: SetConfig(new EndpointHostConfig
{
RawHttpHandlers = new List<Func<IHttpRequest, IHttpHandler>>()
{
req => {
if (req.PathInfo.Contains("filetest"))
return new MP4DownloadHandler();
return null;
}
}
});
我可以获得访问ServiceStack的缓存(ICacheClient)从类MP4DownloadHandler的ProcessRequest成员?
是的,你可以通过单例访问ServiceStack的任何依赖项:
AppHostBase.Resolve<ICacheClient>();
查看ASP中的IOC。. NET ServiceStack AppHost。
在所有ServiceStack应用程序中都有效的相同示例是:
EndpointHost.AppHost.TryResolve<ICacheClient>();