我工作的一个项目,是举办2个独立的“插件”自托管服务栈网站。 我想设定,让我可以从插件目录成为了我的静态内容的文件,以便我可以即时编辑,同时调试和不需要重建的chages复制到bin目录。
我已经有这方面的工作了,加入这个我剃刀文件:
Plugins.Add(new RazorFormat { VirtualPathProvider = new FileSystemVirtualPathProvider(this, "../../../Project1") });
Plugins.Add(new RazorFormat { VirtualPathProvider = new FileSystemVirtualPathProvider(this, "../../../Project2") });
我似乎无法弄清楚如何为我的静态内容文件这样做。 看来,我可以通过增加在时间锁定一个项目EndpointHostConfig.Instance.WebHostPhysicalPath = "../../../ProjectName";
但不能同时在同一时间? 有没有一种方法来设置虚拟路径提供所有文件服务,而不只是剃刀文件?
ServiceStack还没有切换到使用VirtualPathProvider
来处理静态文件的内容。
确定一个静态文件的请求发生在ASP.NET请求管道(即前到达ServiceStack的IHttpHandler的公司),在其中一个解决一个点开始VirtualPathProvider
不理想(即耦合)。
目前我们正在调查,因为它是无效年代由主机Web服务器预期的物理路径使用虚拟路径的后果。
重写ServiceStack的默认行为
在第2个钩子ServiceStack的操作顺序让你注入自定义逻辑和处理静态文件请求覆盖ServiceStack的默认行为,都是在配置AppHost.Configure()
并在这两种情况下,你可以返回一个IHttpHandler
,如果你想HI-插孔的要求:
1)Config.RawHttpHandlers:
SetConfig(new EndpointHostConfig {
RawHttpHandlers = { (httpReq) => ... },
});
2)IAppHost.CatchAllHandlers:
this.CatchAllHandlers.Add((httpMethod, pathInfo, filePath) => ...);