更改静态内容的虚拟路径(Change the virtual path for static con

2019-10-17 17:32发布

我工作的一个项目,是举办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"; 但不能同时在同一时间? 有没有一种方法来设置虚拟路径提供所有文件服务,而不只是剃刀文件?

Answer 1:

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) => ...);


文章来源: Change the virtual path for static content