【发布时间】:2017-06-20 11:36:36
【问题描述】:
我最近将我的 ASP.NET Core MVC 项目迁移到了 ASP.NET Core 2.0。 Web 应用程序是使用 Visual Studio 2017 版本 15.3 预览版迁移的。
该应用程序在开发模式下运行良好(来自 Visual Studio 和使用控制台 dotnet run)但是当我发布它并将其托管在 IIS(版本 10)中时,它会抛出并错误提示:
未找到视图“索引”。搜索了以下位置: /Areas/Admin/Views/Shared/Home/Index.cshtml ...
注意:我有一个自定义路由配置,其中视图是使用自定义 ViewLocationExpander 配置的
这是我的项目结构的样子:
我尝试过的事情是:
在 .csproj 中:
<PreserveCompilationContext>true</PreserveCompilationContext>
在 Program.cs 中:
.UseContentRoot(Directory.GetCurrentDirectory())
我已将 RazorViewEngineOptions 配置如下:
在 .csproj 中包含以下内容也不起作用:
<ItemGroup>
<Content Update="wwwroot\**\*;**\*.cshtml;appsettings.json;web.config">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
</ItemGroup>
如果我尝试手动包含 .cshtml 文件,则会引发重复错误。
我浏览了很多文章和官方 github 链接,但没有任何效果。
我在这里错过了什么吗?任何建议将不胜感激!
【问题讨论】:
-
为避免混淆,请避免使用过时的 (MVC 6) 或令人困惑的术语(DotNetCore/.NET Core,当您实际谈论在 .NET Core 上运行的 ASP.NET Core 时)。 ASP.NET Core 是一个用于创建 Web 应用程序的 webstack。 .NET Core 是一个运行时,是 ASP.NET Core 1.x/2.x 可以在其上运行的两个之一。另一个是完整的.NET Framework
-
当然。我认为一个普通的 .Net 开发人员会毫无困惑地理解。我什至已经包含了标签以防万一。任何方式,谢谢。
-
它曾被称为 MVC6 和 ASP.NET 5,但它确实提高了成为 ASP.NET 4.5 和 MVC 5 继任者的期望,但事实并非如此。这是一个全新的重写,绝不兼容旧的 ASP.NET / MVC5 webstack。话虽如此,真正的 MVC6 仍然有可能出现(基于 MVC5),所以仍然调用 ASP.NET Core "MVC6" 最终会令人困惑
标签: c# asp.net-core asp.net-mvc-routing visual-studio-2017 asp.net-mvc-areas