我目前正在通过创建一个包含静态视图的简单博客来试验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