赞
踩
背景回顾:
我们使用了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进行调试时,就出问题了。
问题如下:
我就疑惑了,我根本就没有用到这个东西,为什么会报错。我百度了各种办法,都没有解决。
后来,我突然奇想,就一个非常简单的操作就解决了:
在Nuget上搜索:System.Security.Cryptography.Pkcs 然后安装,完美解决问题。
具体什么原因导致的,其实我也不清楚。因为当我不使用IIS调试的时候,根本就不会有这个问题。我重新建的项目,即时也使用IIS调试,也不会有这种问题。 只能估计说,我的项目是由Net5升级上来的,可能默认少了这个东西。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。