AppPool Invoke возвращает неизвестное имя. Исключение (DISP_E_UNKNOWNNAME) - PullRequest
2 голосов
/ 07 сентября 2011

При использовании служб каталогов в IIS7 я не могу получить invoke (метод) для работы с пулом приложений. Он последовательно возвращает исключение неизвестного имени. Неизвестное имя. (Исключение из HRESULT: 0x80020006 (DISP_E_UNKNOWNNAME))

Я могу использовать команду InvokeGet для получения данных свойств из пула приложений, но вызывать их постоянно не удается. Это как если бы имена методов были изменены между IIS6 и IIS7.

Код запускается веб-страницей, работающей в окне Windows 2003 с IIS6. Он запрашивает окно Windows 2008 с IIS7.5

Вот мой код:

        string machineName = this.MYMACH.Text; 
        string query;
        string Usrnm = GetUSRNAME();  //decrypts admin user name
        string Pswd = GetPSWORD();    //decrypts admin user password
        query = String.Format("IIS://{0}/w3svc/AppPools/{1}", machineName, AppPoolName);
        DirectoryEntry w3svc = new DirectoryEntry(query, Usrnm, Pswd);

        try
        {
            if (4 == (int)w3svc.InvokeGet("AppPoolState"))   //   <--- works
            {
                w3svc.Invoke("Start", null);
                errormsgs.Text = string.Format("Application pool {0} retarted", btn.Text);
            }
            else
            {
                w3svc.Invoke("Recycle", null);      <--- Excepts
                errormsgs.Text = string.Format("Application pool {0} recycled", btn.Text);
            }

        }
        catch (Exception eee)
        {
            errormsgs.Text = string.Format("Application pool {0} recycle error {1}... Query text = {2}", btn.Text, eee.Message, query);
        }

Я пробовал вызывать несколько способов: w3svc.Invoke ("Recycle", null); w3svc.Invoke ("Recycle", object [] {}); w3svc.Invoke ( "корзина");

Никто из них не работает

есть идеи?

1 Ответ

2 голосов
/ 17 октября 2012

Это потому, что ваш код не имеет права использовать локальный DCOM для выполнения вызова. Попробуйте:

<system.web>
    <identity impersonate="true" userName="" password="" />
</system.web>

Убедитесь, что вы используете учетную запись локального домена, имеете право использовать DCOM на этом компьютере.

Кроме того, вы можете изменить локальную настройку DCOM, чтобы предоставить локальным правам пользователя пул приложений.

...