【问题标题】:dotnet.exe uses cache even when cshtml file is changed即使 cshtml 文件更改,dotnet.exe 也会使用缓存
【发布时间】:2018-09-19 19:15:22
【问题描述】:

我将一个 ASP.NET Core MVC 应用程序部署到我的服务器,并将其托管在 IIS 中。配置绑定,一切正常。问题来了:

  1. 我更改了一个 cshtml 文件
  2. 我只将该 cshtml 文件上传到服务器的相关文件夹中
  3. 我调用公共操作,它返回那个 cshtml 文件的 PartialView
  4. 不是更新版
  5. 我从服务器中删除 cshtml 文件,然后再次调用该操作
  6. 它为文件提供服务,而文件在物理上不再存在
  7. 我重新启动 IIS,再次提供文件
  8. 我杀了dotnet.exe,再次提供文件
  9. 我完全删除了Views 文件夹,仍然提供文件

这里有什么问题?

【问题讨论】:

  • 那么你有服务器端缓存在使用中
  • @BugFinder,服务器端缓存应该通过应用程序池回收或终止进程而失效。我错了吗?我都做了
  • 我检查了响应,不是304,是200。我还检查了响应头,不存在与缓存相关的特定头。
  • 您确定要从正确的文件夹中删除吗?
  • 是的,因为当我停止 IIS 站点时,不会提供文件。我从同一个 IIS 站点中删除了 Views 文件夹。

标签: c# caching iis asp.net-core .net-core


【解决方案1】:

对于将来可能遇到此问题的任何人,这是因为 ASP.NET Core MVC 2.0.5 开箱即用地启用了view precompilation

这意味着虽然我们不希望我们的视图被预编译,但我们在已上传到服务器的发布文件夹中看到了*.PrecompiledViews.dll

因此它不会从 Views 文件夹中找到视图,而是从相关的 dll 文件中加载它们。

如果您想更改此行为,只需在您的.csproj 文件中包含<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>

阅读更多this GitHub issue

【讨论】:

    猜你喜欢
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 2012-08-26
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多