除非发布整个项目,否则 .NET Core MVC 应用程序不会更新视图
.NET Core MVC app not updating View unless entire project is published
我在 IIS(开发)和 Azure App Service(生产)中托管了一个 .NET Core MVC 应用程序。
当我对 Razor 视图进行 简单 HTML 更改并仅发布该视图时,它没有得到更新。
只有当我发布整个项目时它才会更新。
这在 IIS 和 Azure 应用服务中都会发生。
这是默认行为还是我做错了什么?
这是 Azure 应用服务的配置页面:
您无需在门户上进行任何操作。
Lex Li
提供的文章讲了编译时Razor的内容。简单的说,C#服务器代码可以写在.cshtml file
。编译后会变成projectname.Views.dll
,所以当你修改.cshtml
文件时,不确定关联了哪些项目,建议全局更新,避免版本问题带来的bug。
关于你现在部分更新的问题,也很容易解决。首先,您需要在编译时定义文件或文件夹包含选项。您首先需要read offical document。
下面的截图是我的测试项目。
经过我的修改和设置后,您就可以将您自定义的文件或文件夹发布到Azure生产环境中了。 (代码设置部分仅供参考,根据具体项目进行编码)
在post中,您说要发布一个html文件,那么您可以right-click该文件或文件夹,select发布文件或文件夹.
右键单击 test
文件夹。
从下面的截图信息可以看出局部更新成功,速度很快,修改的内容也有提示,并没有进行全局更新
提示:
以上步骤全部测试通过,给出的答案和代码部分仅供参考
如果在操作过程中遇到问题,建议raise a support ticket on the portal.
当您将完整的程序发布到iis 时,iis 会编译并运行它。 .net core mvc默认是关闭运行时编译的,所以即使视图更新发布了,已经是运行的程序也不会编译新的视图
如果想让iis在VS更新释放视图后使用新的视图,可以在启动时添加一行代码,开启编译和运行.
- 将 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation Nuget 包添加到项目中。
- 在startup.cs中添加以下代码:
services.AddRazorPages().AddRazorRuntimeCompilation();
- 发布整个项目。
- 所有这些之后,一旦您更新视图并发布。 IIS 将显示新视图。
这是我的测试结果。
我在 IIS(开发)和 Azure App Service(生产)中托管了一个 .NET Core MVC 应用程序。
当我对 Razor 视图进行 简单 HTML 更改并仅发布该视图时,它没有得到更新。
只有当我发布整个项目时它才会更新。
这在 IIS 和 Azure 应用服务中都会发生。
这是默认行为还是我做错了什么?
这是 Azure 应用服务的配置页面:
您无需在门户上进行任何操作。
Lex Li
提供的文章讲了编译时Razor的内容。简单的说,C#服务器代码可以写在.cshtml file
。编译后会变成projectname.Views.dll
,所以当你修改.cshtml
文件时,不确定关联了哪些项目,建议全局更新,避免版本问题带来的bug。
关于你现在部分更新的问题,也很容易解决。首先,您需要在编译时定义文件或文件夹包含选项。您首先需要read offical document。
下面的截图是我的测试项目。
经过我的修改和设置后,您就可以将您自定义的文件或文件夹发布到Azure生产环境中了。 (代码设置部分仅供参考,根据具体项目进行编码)
在post中,您说要发布一个html文件,那么您可以right-click该文件或文件夹,select发布文件或文件夹.
右键单击 test
文件夹。
从下面的截图信息可以看出局部更新成功,速度很快,修改的内容也有提示,并没有进行全局更新
提示:
以上步骤全部测试通过,给出的答案和代码部分仅供参考
如果在操作过程中遇到问题,建议raise a support ticket on the portal.
当您将完整的程序发布到iis 时,iis 会编译并运行它。 .net core mvc默认是关闭运行时编译的,所以即使视图更新发布了,已经是运行的程序也不会编译新的视图
如果想让iis在VS更新释放视图后使用新的视图,可以在启动时添加一行代码,开启编译和运行.
- 将 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation Nuget 包添加到项目中。
- 在startup.cs中添加以下代码:
services.AddRazorPages().AddRazorRuntimeCompilation();
- 发布整个项目。
- 所有这些之后,一旦您更新视图并发布。 IIS 将显示新视图。
这是我的测试结果。