解决升级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升级上来的,可能默认少了这个东西。

  • 1
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云之彼端cbl

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值