在ServiceStack中映射静态文件目录

时间:2017-01-06 16:28:55

标签: c# mapping servicestack

我正在使用Service Stack在C#中构建一个自托管应用程序。我希望应用程序根据一些配置数据共享内容。

AppHost.Configure 期间,我想读入配置文件并递归地共享多个目录。目录可以是本地文件夹或共享文件夹,具体取决于配置中的每个元素。

例如,如果我的配置如下所示:

[
    {
        "sourceId": "TEST1",
        "contentPath": "\\\\nas01\\files"
    },
    {
        "sourceId": "TEST2",
        "contentPath":  "d:\\files"
    }
]

我希望以递归方式访问这些目录:

http://localhost/TEST1/....
http://localhost/TEST2/....

读取配置文件没问题,实际上,我只是想知道映射这些目录的正确方法,以便我可以使用ServiceStack的内置静态处理功能。

所以我想我的问题是:

在服务堆栈中,在运行时映射静态内容目录的正确方法是什么?

非常感谢!

-Z

1 个答案:

答案 0 :(得分:2)

this commit中添加了对FileSystem Mapping的新支持,现在可以通过覆盖AppHost中的GetVirtualFileSources()来注册文件系统映射,例如:

public override List<IVirtualPathProvider> GetVirtualFileSources()
{
    var existingProviders = base.GetVirtualFileSources();
    existingProviders.Add(new FileSystemMapping(this, "TEST1", "\\\\nas01\\files"));
    existingProviders.Add(new FileSystemMapping(this, "TEST2", "d:\\files"));
    return existingProviders;
}

此更改可从 v4.5.5 + 获得,现在为available on MyGet