当前位置:   article > 正文

解决升级NET6 后,IIS调试出错的问题。以及发布后不生成Views文件夹的问题

解决升级NET6 后,IIS调试出错的问题。以及发布后不生成Views文件夹的问题

背景回顾:

我们使用了Furion创建了一个MVC项目,当时的版本是NET5。并且设置了IIS调试。

其中,我们原本的项目是能实现如下的:

1、我们使用了AddRazorRuntimeCompilation,使得发布后,会生成Views文件夹。这样,若是后期有一些页面的更改,我们可以直接更新cshtml文件而不用整个发布。

2、我们使用IIS调试,当不编译项目的时候,可以通过我们自己设置的IIS的域名直接打开。比如exam.tgxrc.org ,非常方便调试。

后来,我们把项目升级成了NET6,随之而来碰到了问题,之前的两点都不能实现了。

第一点的解决办法:

(1)使用Nuget安装包 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation

(2)【方法一】在Program.cs中的AddControllersWithViews()之后添加对AddRazorRuntimeCompilation()的调用。也就是

builder.Services.AddControllersWithViews().AddRazorRuntimeCompilation();

或者(我用的是下面这个,因为我用的是MVC模式,没有Pages文件夹。若有Pages文件夹,用上面那种)

          【方法二】如果是用的原来的Startup的模式,则使用下面的方法:

services.AddControllersWithViews().AddRazorRuntimeCompilation();

(3)修改项目的csproj文件,在PropertyGroup节点内增加如下两个选项:

<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>

<RazorCompileOnBuild>false</RazorCompileOnBuild>

(4)以上是我查到的常规的问题了。然后运行后,仍旧是报错。后来我发现,我原本就引用有Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation包,但是版本比较低,于是我再把这个版本升级到最新版。即解决问题。

第二点的解决办法:

当我进行了第一点的配置,并且使用IIS进行调试时,就出问题了。

问题如下:

InvalidOperationException: Cannot find compilation library location for package 'System.Security.Cryptography.Pkcs'

我就疑惑了,我根本就没有用到这个东西,为什么会报错。我百度了各种办法,都没有解决。

后来,我突然奇想,就一个非常简单的操作就解决了:

在Nuget上搜索:System.Security.Cryptography.Pkcs  然后安装,完美解决问题。

具体什么原因导致的,其实我也不清楚。因为当我不使用IIS调试的时候,根本就不会有这个问题。我重新建的项目,即时也使用IIS调试,也不会有这种问题。 只能估计说,我的项目是由Net5升级上来的,可能默认少了这个东西。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/598638
推荐阅读
相关标签
  

闽ICP备14008679号