如何解决除非发布整个项目,否则.NET Core MVC应用程序不会更新View
我在IIS(开发)和Azure App Service(生产)中托管了一个.NET Core MVC应用。
当我将简单HTML 更改为Razor视图并仅发布该视图时,它不会更新。
仅当我发布整个项目时,它才会更新。
在IIS和Azure应用程序服务中都会发生这种情况。
这是默认行为还是我做错了什么?
这是Azure App Service的配置页面:
解决方法
您无需在门户网站上执行任何操作。
Lex Li
提供的文章讨论了Razor编译时的内容。简而言之,可以在.cshtml file
中编写C#服务器代码。编译后,它将变为projectname.Views.dll
,因此在进行修改时如果不确定.cshtml
文件与哪个项目相关联,建议对其进行全局更新,以避免由版本问题引起的错误。 / p>
关于您当前的部分更新问题,也很容易解决。首先,您需要在编译时定义文件或文件夹包含选项。您首先需要read offical document。
下面的屏幕快照是我的测试项目。
在我进行了修改和设置之后,您可以将自定义的文件或文件夹发布到Azure生产环境中。 (代码设置部分仅供参考,根据特定项目进行编码)
在帖子中,您说要发布html文件,然后可以右键单击文件或文件夹,然后选择发布文件或文件夹。
右键单击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将显示新视图。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。