我们有一个自定义CMS站点,管理员可以在其中对_Layout.cshtml进行更改(因为他们进行了大量更改)。该站点托管在Azure网站中,但现在我们将其迁移到云服务。
现在,管理面板正在读取并显示_Layout.cshtml的内容(实际上,〜/ Views / Shared文件夹中的所有文件都可以编辑),但是当应用程序尝试写入文件时,它会抛出此错误:拒绝访问路径'F:sitesrootViewsoasShared_Layout.cshtml'。
我们正在开发一种编辑布局文件的新方法,但在我们到达之前,我们需要快速修复! 我使用此方法写入文件:System.IO.File.WriteAllText(path,fileContents);
在本地,在windows azure模拟器中,这是正常工作,但不是在Azure上托管时。
谢谢!
答案 0 :(得分:1)
首先,我必须说即使您可以更新_Layout.cshtml
文件也会遇到一些问题。
如果您有多个Web角色实例,一旦管理员更改了该页面,它将只更新该实例的文件,但默认情况下不会更改其他文件。你必须以某种方式同步它们。
如果您的实例已移至另一台虚拟机,由于某些原因(例如硬件故障或虚拟机资源重新分配),管理员所做的所有更改都将丢失。
所以我强烈建议您修改您的实施。如何将更改部分保存到BLOB,表或数据库中,然后在呈现页面时从数据库中检索内容。我认为这比修改页面本身更好。
HTH。