Предоставьте разрешение сетевой службе для перезапуска пула приложений iis - PullRequest
1 голос
/ 19 мая 2011

Я пытаюсь создать веб-приложение .NET, которое перезапускает пул приложений на удаленном веб-сервере с IIS 6.0 на Windows Server 2003. У меня работает код, но у меня проблема с разрешениями.

string appPoolPath = ConfigurationSettings.AppSettings["ApplicationPool"];

string systemId = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

try
{

    DirectoryEntry svc = new DirectoryEntry(appPoolPath);
    svc.Invoke("Recycle");
    LabelResult.Text = "Application Pool Recycled Succesfully!";
    LabelResult.Visible = true;
}
catch(Exception exc)
{

    LabelResult.Text = "Error (" + systemId + "): " + exc.Message + " : " + exc.InnerException;

    LabelResult.Visible = true;
}

Когда я запускаю код, я получаю следующую ошибку:

Ошибка (NT AUTHORITY \ NETWORK SERVICE): Исключение было выдано целью вызова. : System.UnauthorizedAccessException: доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))

Итак, мой вопрос: как я могу предоставить учетной записи NETWORK SERVICE разрешение на запуск корзины без предоставления учетной записи полных прав администратора? Возможно ли это?

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

Ответы [ 3 ]

1 голос
/ 27 апреля 2015

Это не совсем так. Вам нужен раздел в Web.Config:

<section name="TestSection" restartOnExternalChanges="true" requirePermission="false" type="System.Configuration.AppSettingsSection, System.Configuration"/>

<TestSection configSource="Test.config"></TestSection>

Затем при изменении Test.config пул приложений будет переработан.

1 голос
/ 09 января 2012

Другой вариант:

Поместите фиктивный файл в каталог / bin и обновляйте его каждый раз, когда вы хотите перезапустить пул

0 голосов
/ 18 июня 2015

Попробуйте удалить и создать пул приложений. Решил мою проблему.

var server = new ServerManager();
var pool = server.ApplicationPools.FirstOrDefault(q => q.Name == "MyPool");
if (pool != null)
{
    server.ApplicationPools.Remove(pool);
    server.CommitChanges();

    server.ApplicationPools.Add("MyPool");
    server.CommitChanges();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...