Внесите изменения в файл .cshtml в облачной службе Windows Azure.

У нас есть собственный сайт CMS, на котором администратор может внести изменения в _Layout.cshtml (поскольку они вносят множество изменений). Сайт был размещен на веб-сайтах Azure, но теперь мы перемещаем его в облачные службы.

Сейчас админка читает и показывает содержимое _Layout.cshtml (на самом деле все файлы в папке ~/Views/Shared можно редактировать), но когда приложение пытается записать в файл, выдает это ошибка: Доступ к пути "F:sitesrootViewsoasShared_Layout.cshtml" запрещен.

Мы работаем над новым способом редактирования файлов макета, но прежде чем мы доберемся до него, нам нужно быстрое исправление! Я использую этот метод для записи в файл: System.IO.File.WriteAllText(path, fileContents);

Локально в эмуляторе Windows Azure это работает правильно, но не при размещении в Azure.

Спасибо!


person Gorgi Rankovski    schedule 26.03.2013    source источник


Ответы (1)


Прежде всего, я должен сказать, что будут некоторые проблемы, даже если вы сможете обновить свой файл _Layout.cshtml.

  1. Если у вас есть более одного экземпляра вашей веб-роли, после того, как администратор изменил страницу, он обновит только файл этого экземпляра, но другие НЕ будут изменены по умолчанию. Вы должны как-то их синхронизировать.

  2. Если ваш экземпляр был перемещен на другую виртуальную машину по каким-либо причинам, таким как сбой оборудования или перераспределение ресурсов виртуальной машины, все изменения, внесенные вашим администратором, будут потеряны.

Поэтому я настоятельно рекомендую изменить вашу реализацию. Как насчет сохранения части изменений в BLOB, таблице или базе данных, а затем, когда страница будет отображена, вы получите содержимое из БД. Я думаю, что это было бы лучше, чем просто изменить саму страницу.

ХТН.

person Shaun Xu    schedule 27.03.2013