Невозможно зафиксировать изменения WebAdministration в веб-роли Azure - PullRequest
6 голосов
/ 21 декабря 2010

У меня есть веб-роль Azure, работающая в новом 1.3 SDK, и у меня возникают проблемы с разрешениями при попытке внести изменения в IIS с помощью Microsoft.Web.Administration.ServerManager.Всякий раз, когда я выполняю CommitChanges(), он выдает эту ошибку:

исключение UnauthorizedAccessException «Невозможно записать файл конфигурации из-за недостаточных разрешений».

Мой код ServerManager выполняется по методу OnStart RoleEntryPoint.

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

Ответы [ 3 ]

8 голосов
/ 21 декабря 2010

Убедитесь, что ваша роль выполняется с повышенными привилегиями.

1 голос
/ 21 декабря 2010

Я думаю, что здесь есть два вопроса. Во-первых, использование IIS в Azure. Да, использование 1.3 SDK означает, что теперь у нас есть доступ к большему количеству функций, чем мы делали ранее. Это означает, что мы можем настроить более одного сайта и виртуальные каталоги для наших сайтов в конфигурациях, как показано в обучающем комплекте .

Во-вторых, существует проблема с привилегиями, которую вы получаете, пытаясь вносить изменения программно. Я собираюсь предположить, что вы не пытаетесь сделать одну из вещей, которые вы можете просто сделать через конфигурацию выше. Наиболее вероятная причина того, что ваш код содержит ошибки, заключается в том, что веб-роли не запускаются с правами администратора. К счастью, в 1.3 SDK у нас также есть способ запускать код с повышенными привилегиями. Как показано в другом месте в обучающем комплекте , вы можете создать отдельный файл .exe, который вы указываете для запуска при запуске с повышенными привилегиями в конфигурации.

0 голосов
/ 14 августа 2015

Предоставление четкого примера для ссылки на ответ @smarx.

Вот конфигурация для запуска RoleEntryPoint.OnStart (WebRole.Onstart) с привилегиями уровня администратора.

<ServiceDefinition name="MyProject.Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
  <WebRole name="MyProject.WebRole" vmsize="Small">
    <Runtime executionContext="elevated"/> <!-- Required for certain WebRoleOnStart tasks (avoid insufficient permission errors) -->
    <Sites>
       <!-- ... -->
    </Sites>
 </WebRole>
</ServiceDefinition>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...