0

我们有一个自定义 CMS 站点,管理员可以在其中对 _Layout.cshtml 进行更改(因为他们进行了大量更改)。该站点托管在 Azure 网站中,但现在我们将其移至云服务。

现在,管理面板正在读取并显示 _Layout.cshtml 的内容(实际上, ~/Views/Shared 文件夹中的所有文件都可以编辑),但是当应用程序尝试写入文件时,它会抛出这个错误:对路径“F:sitesrootViewsoasShared_Layout.cshtml”的访问被拒绝。

我们正在研究一种编辑布局文件的新方法,但在我们到达那里之前,我们需要快速修复!我正在使用这种方法写入文件: System.IO.File.WriteAllText(path, fileContents);

在本地,在 Windows azure 模拟器中,这可以正常工作,但在 Azure 上托管时则无法正常工作。

谢谢!

4

1 回答 1

1

首先,我不得不说即使你可以更新你的_Layout.cshtml文件也会有一些问题。

  1. 如果您有多个 Web 角色实例,一旦管理员更改页面,它只会更新该实例的文件,但默认情况下不会更改其他文件。你必须以某种方式同步它们。

  2. 如果您的实例因硬件故障或虚拟机资源重新分配等原因被移动到另一个虚拟机,您的管理员所做的所有更改都将丢失。

所以我强烈建议修改你的实现。如何将更改部分保存到 BLOB、表或数据库中,然后在呈现页面时从 DB 中检索内容。我认为这比仅仅修改页面本身要好。

HTH。

于 2013-03-27T02:24:51.520 回答