【问题标题】:AppPool Invoke returns Unknown name. Exception (DISP_E_UNKNOWNNAME)AppPool Invoke 返回未知名称。异常(DISP_E_UNKNOWNNAME)
【发布时间】:2011-11-12 08:46:31
【问题描述】:

在 IIS7 中使用目录服务时,我无法让调用(方法)与应用程序池一起使用。它始终返回未知名称异常。 未知名称。 (来自 HRESULT 的异常:0x80020006 (DISP_E_UNKNOWNNAME))

我可以使用 InvokeGet 命令从应用程序池中获取属性数据,但调用始终失败。就好像在 IIS6 和 IIS7 之间更改了方法名称。

代码由运行在 IIS6 的 Windows 2003 机器上的网页运行,它正在使用 IIS7.5 查询 Windows 2008 机器

这是我的代码:

        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("回收", null); w3svc.Invoke("回收", object[]{}); w3svc.Invoke("回收");

它们都不起作用

有什么想法吗?

【问题讨论】:

    标签: iis-7.5 invoke application-pool


    【解决方案1】:

    这是因为您的代码无权使用本地 DCOM 进行调用。 试试看:

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

    确保您使用的本地域帐户有权在这台机器上使用 DCOM。

    此外,您可以更改本地 DCOM 设置以授予本地应用程序池用户权限。

    【讨论】:

      猜你喜欢
      • 2013-01-08
      • 2017-01-05
      • 2014-08-11
      • 2015-05-11
      • 2014-11-15
      • 1970-01-01
      • 2015-07-25
      • 2013-07-03
      • 1970-01-01
      相关资源
      最近更新 更多