除非发布整个项目,否则.NET Core MVC应用程序不会更新View

问题描述

我在IIS(开发)和Azure App Service(生产)中托管了一个.NET Core MVC应用。

当我将简单HTML 更改为Razor视图并仅发布该视图时,它不会更新。

仅当我发布整个项目时,它才会更新。

在IIS和Azure应用程序服务中都会发生这种情况。

这是认行为还是我做错了什么?

这是Azure App Service的配置页面

enter image description here

解决方法

您无需在门户网站上执行任何操作。

Lex Li提供的文章讨论了Razor编译时的内容。简而言之,可以在.cshtml file中编写C#服务器代码。编译后,它将变为projectname.Views.dll,因此在进行修改时如果不确定.cshtml文件与哪个项目相关联,建议对其进行全局更新,以避免由版本问题引起的错误。 / p>

关于您当前的部分更新问题,也很容易解决。首先,您需要在编译时定义文件或文件夹包含选项。您首先需要read offical document

下面的屏幕快照是我的测试项目。

enter image description here

enter image description here

enter image description here

在我进行了修改和设置之后,您可以将自定义的文件或文件夹发布到Azure生产环境中。 (代码设置部分仅供参考,根据特定项目进行编码

在帖子中,您说要发布html文件,然后可以右键单击文件或文件夹,然后选择发布文件或文件夹。

enter image description here

右键单击test文件夹。

enter image description here

从下面的屏幕快照消息中,我们可以看到部分更新成功,速度非常快,还提示了修改的内容,并且未执行全局更新。

enter image description here

提示:

  1. 以上步骤均经过测试和通过,给出的答案和代码部分仅供参考。

  2. 如果在操作过程中遇到问题,建议使用raise a support ticket on the portal

,

将完整程序发布到iis时,iis会编译并运行它。 .net core mvc默认情况下会禁用运行时编译,因此即使更新和发布了视图,已经运行的程序也不会编译新视图。

如果希望iis在VS更新并释放视图后使用新视图,则可以在启动时添加一行代码以启用编译和运行功能。

  1. 将Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation Nuget程序包添加到项目中。
  2. 在startup.cs中添加以下代码:

services.AddRazorPages().AddRazorRuntimeCompilation();

  1. 发布整个项目。
  2. 所有这些之后,一旦您更新视图并发布。 IIS将显示新视图。

这是我的测试结果。 enter image description here