ServiceStack如何识别新添加的文件夹?

时间:2014-10-14 04:40:36

标签: c# servicestack servicestack-razor

在我的应用程序中,只要使用代码创建新的托管客户端,我就会将新文件夹和一组文件放入我的目录中:

Directory.CreateDirectory("MyClient", ...);
file.CopyTo("MyClient", ...);

文件夹就像这个例子:

- www.MyDomain.com/MyClient

- www.MyDomain.com/MyClient/Default.cshtml

- www.MyDomain.com/MyClient/js/default.js

- www.MyDomain.com/MyClient/img/default.png

......等等

现在,如果您访问MyClient路径,则可能会加载Default.cshtml,但您将找不到404页面。在重新启动托管之前,如果您再次访问相同的路径,则会获得正确的Default.cshtml页面内容。

如果我理解正确,SS只在启动时构建mvc文件夹路径,那么在重新启动主机之前它不会自动添加新文件夹吗?

有没有办法让SS了解文件夹结构的变化?

1 个答案:

答案 0 :(得分:1)

ServiceStack创建顶级文件和目录的静态缓存,存储在私有静态HttpHandlerFactory.WebHostRootFileNames(小写)中。

一种方法是使用Reflection将新的顶级myclient文件夹添加到私有集合中。另一种方法是在现有的顶级文件夹下上传文件/文件夹,例如:

/clients/MyClient

嵌套文件/文件夹不会被缓存,因此可以在AppDomain启动后添加和访问。