【问题标题】:Kestrel / IIS Express requires restart before edited .cshtml view changes are shown in browserKestrel / IIS Express 需要重新启动,然后编辑的 .cshtml 视图更改才会显示在浏览器中
【发布时间】:2023-03-20 22:59:01
【问题描述】:

我正在设置我的第一个 ASP.NET vNext Web 应用程序项目。

我已经让默认项目在 Windows 和 OSX 中构建和运行良好。我已经在 Mac 上使用红隼进行了测试,并在 Windows IIS Express 和红隼中进行了测试。

我遇到的问题是,在Windows中,在web服务器运行时编辑cshtml视图文件在我下次刷新浏览器时没有反映。

  • 在 OSX 中,我可以运行“dnx web”并导航到 localhost:5000 并浏览该站点。然后我可以编辑 .cshtml 查看文件,切换回浏览器,点击刷新,我可以看到所有更改。这是我期望发生的并且在以前的版本中发生的情况。*

  • 在 Windows 中,我可以在我在 OSX 上使用的同一站点上运行 dnx web 或 IIS Express,导航到 localhost:5000(或 IIS Express 自己的端口号)并浏览该站点。然后我切换到编辑 cshtml 查看文件,但是当我切换回浏览器进行重置时,没有显示更改。直到我重新启动 kestrel 或 IIS express 才会显示更改。

不过,奇怪的是,我可以编辑一个 .cs 控制器文件,然后网站会自行重新编译,我不需要重新启动它——至少在 Windows 中是这样。 (在 OSX 中,编辑控制器文件不会导致自动重新编译,但这是一个问题,我相信 dnx-watch 会解决这个问题。

我在 project.json 或其他设置文件中是否遗漏了导致 Windows 出现问题的内容?

我试过了:

  • 创建第二个完全干净的 Web 应用程序项目
  • 重新安装 ASP.NET
  • 最后绝望的是,用 Visual Studio 2015 社区版创建 Windows 10 的全新安装,但无济于事

有什么方法可以让 Windows 中的 Kestrel 或 IIS Express 在更新后的 cshtml View 文件被编辑后提供服务,而无需重新启动服务器?

*旁注,OSX 中的 ASP.NET MVC 很棒!

【问题讨论】:

  • 你排除浏览器缓存了吗?
  • 是的 - wwwroot 中的静态文件更新正常,我对控制器进行更改后的 cshtml 视图文件也是如此(这会导致重新编译)

标签: asp.net-core asp.net-core-mvc


【解决方案1】:

根据@SRQ Coder 的回复,特别是它应该按我希望的那样工作的保证,我找到了原因,但目前还没有合适的解决方案。

我的项目目录位于网络共享上,我直接从那里加载项目(我在 Mac 上运行 Parallels Desktop)。这适用于 ASP.NET 4.x / MVC 5(及更早版本)。但是看起来 ASP.NET 5 不支持这种设置。

我将项目文件夹复制到本地 C: 驱动器的那一刻一切正常

从 \\network-share 打开项目时,项目会加载,我可以运行/调试网站,但在 IIS Express/Kestrel 重新启动之前,CSHTML 编辑不会显示在浏览器中

从 X:\ 映射的网络驱动器打开项目没有任何区别

【讨论】:

    【解决方案2】:

    我无法在我的机器上重现您的问题:VS2015; Win10 等在 IIS 模式或 Web: localhost/5000 模式和多个浏览器上。

    我既可以编辑“共享”cshtml 文件,如“_Layout”,也可以编辑默认的“home/index cshtml”文件,没有任何问题。

    由于您已经重新安装了这么多系统,我想知道您是否没有重新安装 web-essentials 并启用“浏览器链接”。

    我感觉到你的痛苦......

    【讨论】:

    • 我没有检查浏览器链接——我没想过检查它是否启用。它是否仍默认启用?明天将首先进行实验
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2011-10-23
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多