Я хочу перезапустить пул приложений IIS 6 в веб-приложении, используя asp.net c #.
protected void Page_Load(object sender, EventArgs e)
{
//Recycle IIS 6's App Pool
Recycle("localhost", "appPool_02");
}
void Recycle(string machine, string appPoolName)
{
string path = "IIS://" + machine + "/W3SVC/AppPools/" + appPoolName;
DirectoryEntry w3svc = new DirectoryEntry(path);
w3svc.Invoke("Recycle", null);
}
"appPool_02" - это другое имя пула приложений, и приведенный выше код выполняется в "appPool_01".
Когда я использовал код выше, произошла ошибка:
拒绝 访问。 (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))
Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.UnauthorizedAccessException: 拒绝 访问。 (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))
ASP.NET не авторизован для доступа к запрошенному ресурсу. Рассмотрите возможность предоставления прав доступа к ресурсу для удостоверения запроса ASP.NET. ASP.NET имеет базовый идентификатор процесса (обычно {MACHINE} \ ASPNET в IIS 5 или Network Service в IIS 6), который используется, если приложение не олицетворяет собой. Если приложение выполняет олицетворение с помощью идентификатора, это будет анонимный пользователь (обычно IUSR_MACHINENAME) или пользователь с запросом аутентификации.
Чтобы предоставить ASP.NET доступ к файлу, щелкните файл правой кнопкой мыши в проводнике, выберите «Свойства» и перейдите на вкладку «Безопасность». Нажмите «Добавить», чтобы добавить соответствующего пользователя или группу. Выделите учетную запись ASP.NET и установите флажки для нужного доступа.
Ошибка источника:
Line 72: string path = "IIS://" + machine + "/W3SVC/AppPools/" + appPoolName;
Line 73: DirectoryEntry w3svc = new DirectoryEntry(path);
Line 74: w3svc.Invoke("Recycle", null);
Line 75: }
Line 76:
Исходный файл: e: \ iProject \ iProgress \ iProgress \ T \ T.aspx.cs Строка: 74
Трассировка стека:
[UnauthorizedAccessException: 拒绝 访问。 (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))]]
[TargetInvocationException: Исключение было сгенерировано целью вызова.]
System.DirectoryServices.DirectoryEntry.Invoke (String methodName, Object [] args) +238
WE_T.Recycle (String machine, String appPoolName) в e: \ iProject \ iProgress \ iProgress \ T \ T.aspx.cs: 74
WE_T.Page_Load (Отправитель объекта, EventArgs e) в e: \ iProject \ iProgress \ iProgress \ T \ T.aspx.cs: 38
System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, Объект o, Объект t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Отправитель объекта, EventArgs e) +35
System.Web.UI.Control.OnLoad (EventArgs e) +99
System.Web.UI.Control.LoadRecursive () +50
System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint) + 627