• 解决升级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文件夹,用上面那种):

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

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

    services.AddControllersWithViews().AddRazorRuntimeCompilation();

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

    false

    false

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

  • 相关阅读:
    漫谈:C/C++ char 和 unsigned char 的用途
    一个简单的HTML网页(千与千寻电影) 大二学生网页设计与制作 电影主题网页制作
    PHP项目中composer和Git的组合使用
    controller搭建Nova报错
    RocketMQ安装和使用
    npmp 的简单理解
    会议文字记录工具【钉钉闪记】
    全面对比GPT-3.5与LLaMA 2微调
    nesp实验八 路由器RIP协议路由实验
    类和对象(上)--关于面向对象,类的定义,访问限定符,this指针
  • 原文地址:https://blog.csdn.net/qq331059279/article/details/126369913