C# 视图在更改后不刷新
我遇到了这个令人沮丧的问题。我在razor视图(cshtml)中更改文本,C# 视图在更改后不刷新,c#,asp.net-mvc,razor,visual-studio-2015,C#,Asp.net Mvc,Razor,Visual Studio 2015,我遇到了这个令人沮丧的问题。我在razor视图(cshtml)中更改文本,不调试启动,刷新(Ctrl+F5)浏览器,但什么也没发生。奇怪的是,如果我修改控制器的返回值(比如returnok(“test”);)或包含的静态文件(比如CSS),刷新,更改是可见的。只有每次停止调试时,razor视图才会更新 以下是我已经尝试过的东西: 确保选中了“在环境外部更改文件时检测” 在运行时,当项目过期时是始终生成 在Edge、Chrome和Firefox上进行了尝试,无论是否进行了硬刷新 重新启动Visu
不调试启动
,刷新(Ctrl+F5)浏览器,但什么也没发生。奇怪的是,如果我修改控制器的返回值(比如returnok(“test”);
)或包含的静态文件(比如CSS),刷新,更改是可见的。只有每次停止调试时,razor视图才会更新
以下是我已经尝试过的东西:
- 确保选中了“在环境外部更改文件时检测”
是在运行时,当项目过期时
始终生成
- 在Edge、Chrome和Firefox上进行了尝试,无论是否进行了硬刷新
- 重新启动Visual Studio数字时间
- 清洁/重建解决方案
- 在新模板项目上执行此操作
@RenderSection(“css”,required:true)
invalidoOperationException:以下部分已经定义,但还没有被“bla\bla\bla”页面呈现:css
在这一点上,VS 2015实际上是不可用的,因为你不知道,如果你真的错过了什么,或者它是VS表现出来的以下是在幕后发生的事情:.net framework将你的razor编译成一个机器形式(DLL)并执行它。然后,它监视您的web文件夹以监视更改,当它检测到更改时,它会重新编译您的razor并执行新的DLL 在您的情况下,与监视文件更改相关的某些操作似乎失败了。它在完全重新启动时仍然有效,因为即使没有检测到文件更改,也会进行编译。常见的原因有:
要确认这是问题所在,我建议只编辑web.config(添加/删除字符),然后查看重新加载是否成功-只是为了证明这是重新编译问题,而不是visual studio调试问题。假设是这种情况,并且假设它不是NAS,我建议暂时给文件夹一个“everyone-everything”权限,看看它是否工作,然后再逐渐将权限降低到您想要的位置 检查您的
web.config
并确保您没有fcnMode=“Disabled”
或fcnMode=“NotSet”
使用
或
- 默认值对于每个子目录,应用程序都会创建一个监视子目录的对象。这是默认行为
- 已禁用文件更改通知已禁用
- NotSet未设置文件更改通知,因此应用程序将创建一个监视每个子目录的对象。这是默认设置 行为
- Single应用程序创建一个对象来监视主目录,并使用此对象监视每个子目录
也有同样的问题。经过长时间的调试并尝试了几乎所有的方法之后,我们发现有人在VisualStudio中将文件从一个文件夹移动到了另一个文件夹,并将其签入TFS。因此,项目文件已更新,但原始文件仍存在于磁盘上。因此,我的本地IIS在新位置呈现旧文件而不是新文件 这是令人沮丧的,是的。我以前有过这个问题。 我的案例是我在Macbook Pro上运行windows 10 VM并行,项目文件位于mac OS的共享文件夹中
如果有人和我有同样的情况,将项目移动到非共享目录,如C:\将解决此问题。如果您使用Parallels WM在Mac上运行,并且您的项目位于Mac卷上,您可以使用chmod解决此问题
chmod -R 777 *
有两种方法可以解决此问题: 1。请检查存在.sln文件的文件夹的权限。文件访问权限可能有问题,因为在IIS express server运行时Visual studio可能无法访问文件,因此为了在每次需要重新启动服务器时反映新的.cshtml更改,我建议通过以下方式编辑文件夹访问权限: 右键单击文件夹->属性->安全->单击编辑按钮->检查所有选项->保存 重新启动Visual studio以查看更改 如果这不起作用,则使用2选项 2。在startup.cs文件中的项目中,在方法中的ConfigureServices()下一行添加以下内容: services.AddMvc().AddRazorOptions(options=>options.allowReciplingViewsOnFileChange=true)强>
在并行虚拟机上,在Macbook Pro上,如果项目文件位于共享文件夹中,则重新编译机制将不起作用;
将文件夹复制到驱动器C,问题将得到解决是否打开缓存?我已关闭浏览器中的缓存,并始终使用Ctrl+F5强制执行干净的重新加载,如果这是您的意思。不,我指的是服务器上的缓存。操作方法上有属性,或者您可以使用处理程序使服务器
<httpRuntime targetFramework="4.5.2" fcnMode="Single" />
chmod -R 777 *