Asp.net Core 6.0 之动态修改Cshtml(发布篇)
昨天写了一篇动态修改Cshtml的,不过那是在开发环境下,用IIS_Express或独立进程的方式。但最终发布到IIS,该如何更新呢?
这个不得不说是遇到一个巨大的坑了。
首先在网上查,似乎也很简单,就是在Startup.cs里的ConfigureServices()方法里加上
services.AddRazorPages().AddRazorRuntimeCompilation(); 包括最新的官网上都是这样写的,参见ASP.NET Core 中的 Razor 文件编译 | Microsoft Docs
另外,还要将FolderProfile.pubxml里的预编译设为False,
<RazorCompileOnBuild>false</RazorCompileOnBuild>
<RazorCompileOnPublish>false</RazorCompileOnPublish>
我照做了,发布后却感觉有点不对劲:
1.如果不设为false,在发布目录下并没有生成XXXX.View.dll,只有一个XXXX.dll,我修改了一个Cshtml,发布到另一个目录,只将XXXX.dll更新到站点下,页面就更新了,说明Cshtml被编译到这个dll里了。
2.如果设为false,确实发布后有View目录了,但访问网站却直接报错了,说找不到内容。感觉根本没有执行AddRazorRuntimeCompilation()这个方法。
我仔细回忆了一下,这个startup.cs文件 在创建项目之初并不存在,是我手工添加的,难道是最新版本又有变化?再查了下项目的启动次序
https://www.cnblogs.com/whuanle/p/10095209.html
到progarm.cs里看了下,里面有个builder.Services.AddControllersWithViews(),我加上了启用动态编译的方法:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews().AddRazorRuntimeCompilation();
var app = builder.Build();
再发布后,这次打开页面用了很长的时间,估计有戏了,应该是在动态编译。页面能打开了。试着改了下Cshtml,再刷新下页面,能看到更新了!
总结:应该是最新版本6.0做了启动方法的整合,弃用了Startup.cs,启动时的服务设置放到了Program.cs中,但是文档即没有更新....
建议:在学习Asp.net 6.0之前,建议先看下差异ASP.NET Core 6.0 的新增功能 | Microsoft Docs
因为其它地方的文档还没有更新,看这里就能理解为什么没有XXXXX.View.dll了
Asp.net Core 6.0 之动态修改Cshtml(发布篇)相关推荐
- ASP.NET Core 2.0 特性介绍和使用指南
ASP.NET Core 2.0 发布日期:2017年8月14日 ASP.NET团队宣布ASP.NET Core 2.0正式发布,发布Visual Studio 2017 15.3支持ASP.NET ...
- asp.net core 1.1 项目升级至 asp.net core 2.0 preview 2
这两天把一个 asp.net core 1.1 的项目迁移到了 asp.net core 2.0 preview 2 ,在这篇随笔中记录一下. 如果项目在有 global.json 文件,需要删除或修 ...
- ASP.NET Core 1.0开发Web API程序
.NET Core版本:1.0.0-rc2 Visual Studio版本:Microsoft Visual Studio Community 2015 Update 2 开发及运行平台:Window ...
- ASP.NET Core 3.0中使用动态控制器路由
原文:Dynamic controller routing in ASP.NET Core 3.0 作者:Filip W 译文:https://www.cnblogs.com/lwqlun/p/114 ...
- 使用依赖注入的ASP.NET Core 2.0用户角色基础动态菜单管理
目录 介绍 背景 先决条件 使用代码 第1步 - 创建数据库 创建数据库 第2步 - 创建ASP.NET Core 更新appsettings.json 步骤3 - 在Startup.cs文件中添加I ...
- Ubuntu GitLab CI Docker ASP.NET Core 2.0 自动化发布和部署(1)
相关博文: Ubuntu 简单安装和配置 GitLab Ubuntu 简单安装 Docker Ubuntu Docker 简单安装 GitLab Ubuntu Docker 安装和配置 GitLab ...
- Amazing ASP.NET Core 2.0
前言 ASP.NET Core 的变化和发展速度是飞快的,当你发现你还没有掌握 ASP.NET Core 1.0 的时候, 2.0 已经快要发布了,目前 2.0 处于 Preview 1 版本,意味着 ...
- ASP.NET CORE 1.0 MVC API 文档用 SWASHBUCKLE SWAGGER实现
from:https://damienbod.com/2015/12/13/asp-net-5-mvc-6-api-documentation-using-swagger/ 代码生成工具: https ...
- [译]ASP.NET Core 2.0 网址重定向
问题 如何在ASP.NET Core 2.0中实现网址重定向? 答案 新建一个空项目,在Startup.cs文件中,配置RewriteOptions参数并添加网址重定向中间件(UseRewriter) ...
最新文章
- C# 错误!!容量超出了最大容量。参数名: capacity 这个是什么问题呢?
- python嵌套列表知多少
- QML 性能优化建议(一)
- SAP PI screenshot
- 【转】logback 常用配置详解(序)logback 简介
- FreeSWITCH安装报错“You must install libyuv-dev to build mod_fsv”的解决方案
- 菌群多样性检测_多样性丰富了中学Linux用户群
- Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (4) - 流水线前端概述
- 【原】数据分析/数据挖掘/机器学习---- 必读书目
- 从海康录像机取RTSP转发流,规律性的断流
- Systemview5安装的问题:the license for this version of systemview has expired......
- 目标检测网络 -- FasterRCNN
- java集合优秀率怎么算,优秀率怎么算(及格率和优秀率公式)
- 基于Java、MySQL的毕业设计,房屋租赁系统
- 酒店客房管理系统总结
- Interspeech2022论文解读 | LODR:一种更好、更轻量的语言模型融合新方式
- 【Zotero】使用坚果云同步PC端和IOS端
- Java中日期格式化字符串大小写区别YYYY和yyyy
- 使用uniapp开发APP时的调试/安卓打包等
- 下行控制信息 - 上行DCI