ASP.NET Core 2.0 webApp 在发布到 iis 后显示 'view Index was not found...'

ASP.NET Core 2.0 webApp shows 'view Index was not found...' after publishing to iis

我最近将我的 ASP.NET 核心 MVC 项目迁移到 ASP.NET 核心 2.0。使用 Visual Studio 2017 版本 15.3 预览版迁移了 Web 应用程序。

该应用程序在开发模式下运行良好(来自 Visual studio 和使用控制台 dotnet 运行)但是当我发布并托管它时在 IIS(版本 10)中,它抛出错误并说:

未找到视图 'Index'。搜索了以下位置: /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 链接,但没有任何效果。

我是不是漏掉了什么?任何建议将不胜感激!!

我终于解决了。

首先,我必须在 .csproj 文件的 PropertyGroup 中包含以下内容

<MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>

一定是因为我的分布式Views结构。

我不知道为什么,但我还必须在发布我的应用程序后单独发布我的 Views 文件夹(Views 和 Areas)。

注意:在 .csproj 中包含用于发布的 Views 文件夹没有帮助

发表我的观点后,浏览器报错说 找不到包 'Microsoft.Win32.Registry'.

的编译库位置

因此,我不得不安装 Microsoft.Win32.Registry 软件包并再次发布我的文件夹。

这就是它的工作原理。

希望对遇到类似问题的人有所帮助。