【发布时间】:2016-09-08 16:28:09
【问题描述】:
我创建了一个 ASP.NET MVC Core 项目并注册了一些自定义文件夹来搜索视图。我使用这样的自定义 IViewLocationExpander 类做到了这一点:
public class AppsViewLocationExpander : IViewLocationExpander
{
public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context,
IEnumerable<string> viewLocations)
{
yield return "/MyViewLocation/A/Views";
//and so on...
}
并在Startup.cs中使用了这个类:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.Configure<RazorViewEngineOptions>(options =>
{
options.ViewLocationExpanders.Add(new AppsViewLocationExpander());
});
}
MyViewLocation/A/Views 文件夹中有一些 *.cshtml 文件,并且本地调试会话没有任何错误继续进行。 现在我将 Web 应用程序发布到 Azure,我收到了 500 内部服务器错误。我附加了 Visual Studio 以调试此错误并收到此消息:
System.InvalidOperationException:未找到视图“索引”。搜索了以下位置:
/MyViewLocation/A/Views/Index.cshtml
我做错了什么?我是否也必须在其他地方添加 Views-Folder?
编辑:
我在初始设置时修改了我的 project.json,但这对我的 Azure 问题没有帮助。但可能是在我本地调试时需要找到视图。
"publishOptions": {
"include": [
"wwwroot",
"Views",
"Areas/**/Views",
"MyViewLocation/**/Views",
"appsettings.json",
"web.config"
]
},
编辑 2:
我手动将 *.cshtml 文件上传到 FTP 服务器。尽管如此,他们仍然没有找到。
【问题讨论】:
-
视图文件是部署到网络应用还是丢失?
-
@DavidG 我在 FTP 上找不到它们,所以我认为它们不见了。这里需要修改部署脚本吗?
-
视图文件设置的
Build Action是什么? (即在 Visual Studio 中文件的属性中) -
@DavidG 属性窗口仅显示所有文件的文件名和完整路径。这与 .NET 核心/新的 Visual Studio 项目结构有关吗?
-
啊,是的,好点子!所以文件应该只是复制过来。你是如何部署的?
标签: c# asp.net-mvc azure asp.net-core-mvc azure-web-app-service