ASP.NET Core Directory.EnumerateDirectories在部署到Azure AppService时不起作用

时间:2017-12-08 19:46:07

标签: azure asp.net-core asp.net-core-mvc azure-web-sites asp.net-core-2.0

我目前正在通过创建一个包含静态视图的简单博客来试验ASP.NET Core MVC。我创建了一个实现IViewLocationExpander的自定义类,以枚举目录结构以检索剃刀视图

public class FolderEnumerationViewExpander : IViewLocationExpander
{
    public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context,
        IEnumerable<string> viewLocations)
    {
        var locations = viewLocations.ToList();

        foreach (var directory in Directory.EnumerateDirectories("Views/Blog", "*", SearchOption.AllDirectories))
        {
            locations.Add($"/{directory.Replace("\\","/")}" + "/{0}.cshtml");
        }

        return locations.AsEnumerable();
    }
}

我已将此类配置为在Startup.cs的ConfigureServices方法

中使用
public void ConfigureServices(IServiceCollection services)
    {
        services.AddSingleton<IPostsMetaDataRepositry>(new JsonPostsMetaDataRepository(ConfigurationPath.Combine("posts.json")));
        services.Configure<RazorViewEngineOptions>(o => { o.ViewLocationExpanders.Add(new FolderEnumerationViewExpander()); });
        services.AddMvc();
    }

当我使用IISExpress在本地运行我的应用程序时,这似乎工作得很好但是,当我将应用程序部署到Azure AppService时,在尝试查找视图时,只会枚举〜/ Views / Blog中的少数几个目录。 / p>

我很确定这个问题是配置问题,但我很难追查它可能是什么。关于为什么会出现这种情况的任何想法?

我在GitHub上有这个项目的完整资料来供参考:https://github.com/pstricker/Develothink

0 个答案:

没有答案