2

我已经想出了如何绕过 ServiceStack 来实现我自己的 HTTP 处理程序来提供文件作为下载,并且运行良好。但是,我想知道,既然我在服务堆栈之外,我是否可以以某种方式访问​​缓存。

下面是我如何注册我的自定义 IHTTPHandler:

 SetConfig(new EndpointHostConfig
                {
                    RawHttpHandlers = new List<Func<IHttpRequest, IHttpHandler>>()
                    {
                        req => {
                            if (req.PathInfo.Contains("filetest"))
                                return new MP4DownloadHandler();
                            return null;
                        }
                    }
                });

我可以从 MP4DownloadHandler 类的 ProcessRequest 成员访问 ServiceStack 的缓存 (ICacheClient) 吗?

4

1 回答 1

3

是的,您可以通过单例访问任何 ServiceStack 的依赖项:

AppHostBase.Resolve<ICacheClient>();

它着眼于 ASP.NET ServiceStack AppHost 中的 IOC。

适用于所有 ServiceStack AppHosts 的相同示例是:

EndpointHost.AppHost.TryResolve<ICacheClient>();
于 2013-03-19T20:03:46.650 回答