更改后视图不刷新
本文关键字:刷新 后视图 | 更新日期: 2023-09-27 18:32:23
我遇到了这个令人沮丧的问题。我在剃须刀视图 (cshtml)、Start without Debugging
、刷新 (Ctrl+F5) 浏览器中更改文本,但没有任何反应。奇怪的是,如果我修改控制器的返回值(例如return Ok("test");
)或包含的静态文件(如CSS),刷新,则更改是可见的。仅当我每次停止启动和停止调试时,Razor 视图才会更新。
以下是我已经尝试过的事情:
- 已确保选中
Detect when file is changed outside the environment
。 -
On run, when projects are out of date
Always build
. - 在Edge,Chrome和Firefox上尝试过这个,有和没有硬刷新。
- 重新启动 Visual Studio 数字时间。
- 清洁/重建解决方案。
- 在新模板项目上执行此操作。
附言我看到有很多类似的问题,但是,没有一个答案似乎可以解决我的问题。
更新
这似乎是一个更大范围的问题。如果我:
- 在父视图中创建一个必需的剃须刀部分,如下所示
@RenderSection("css", required: true)
。 - 不在子视图中实现呈现。
- 我(显然)得到了
InvalidOperationException: The following sections have been defined but have not been rendered by the page at 'bla'bla'bla':css
. - 然后我实现它。
- 保存,在火狐中按 Ctrl+F5。错误仍然存在。
在这一点上,VS 2015实际上是无法使用的,因为你不知道,如果你真的错过了什么,或者它是VS的行为
我以前遇到过这个问题。我的情况是我在Macbook Pro上运行Windows 10 VM Parallel,项目文件位于mac OS的共享文件夹中。
如果有人和我一样有同样的情况,请将项目移动到非共享目录,例如 C:''将解决问题。
以下是幕后发生的事情:.NET 框架将你的剃刀编译成机器形式 (DLL) 并执行它。然后,它会监视您的 Web 文件夹以监视更改,当检测到更改时,它会重新编译您的 razor 并执行新的 DLL。
在您的情况下,似乎与监视文件更改相关的某些内容失败。它仍然在完全重新启动时工作,因为即使没有文件更改检测,也会进行编译。常见原因是:
- 你正在提供来自网络(NAS 或文件共享)的文件,这不允许你的电脑监视更改。这可能是缺少的功能(如非 SMB 文件共享)或权限问题。这在 Web 场方案中很常见,但可能不是您的开发方案。
- 其他东西已经锁定了文件(权限?),这会阻止此监视挂钩保留文件。
为了确认这是问题所在,我建议只编辑 web.config(添加/删除字符)并查看重新加载是否成功 - 只是为了证明这是一个重新编译问题而不是可视化工作室调试问题。假设是这种情况,并假设它不是 NAS,我建议暂时为文件夹授予"每个人 - 一切"权限,看看它是否有效,然后逐渐将权限再次减少到您想要的位置。
检查您的web.config
并确保没有fcnMode="Disabled"
或fcnMode="NotSet"
用
<httpRuntime targetFramework="4.5.2" fcnMode="Default" />
或
<httpRuntime targetFramework="4.5.2" fcnMode="Single" />
- 默认值 对于每个子目录,应用程序创建一个监视子目录的对象。这是默认行为。
禁用- 的文件更改通知已禁用。
- 未设置 NotSet 文件更改通知,因此应用程序会创建一个监视每个子目录的对象。这是默认值 行为。
- 单 应用程序创建一个对象来监视主目录,并使用此对象监视每个子目录。
Fcn模式枚举
在并行虚拟机上,在 Macbook Pro 上,如果项目文件位于共享文件夹中,则重新编译机制将不起作用;将文件夹复制到驱动器 C,问题将得到解决
刚刚遇到了同样的问题。经过长时间的调试并尝试了几乎所有方法后,我们发现有人在Visual Studio中将文件从一个文件夹移动到另一个文件夹,并将其签入TFS。因此,项目文件已更新,但原始文件仍存在于磁盘上。所以我的本地 IIS 在新位置呈现旧文件而不是新文件。
这是令人沮丧的,是的。
Parallels WM 在 Mac 上运行,并且你的项目位于你的 Mac-Volume 上,你可以使用 chmod 来解决这个问题。
chmod -R 777 *
有两种方法可以解决此问题:
1.检查.sln文件所在的文件夹的权限。文件访问权限可能存在问题,因为Visual studio在IIS快速服务器运行时可能无法访问文件,因此每次需要重新启动服务器时都会反映新的.cshtml更改,因此我建议通过以下方式编辑文件夹访问权限:
右键单击文件夹->属性->安全->单击编辑按钮->选中所有选项->保存。
重新启动 Visual Studio 以查看更改。
如果这不起作用,请使用 2 选项。
2.在启动的项目中.cs文件在方法中添加以下行 ConfigureServices():
服务业。AddMvc().添加剃刀选项(选项 => 选项。允许重新编译视图文件更改 = true);