简体   繁体   中英

C# IIS 7.5 class not registered exception

We just started up a new webserver and i'm running into "class not registered" when creating a new application pool. I'm using the code below but I have no idea how to distinguish what is not registered. Any thoughts would be awesome.

Thanks.

string path = "IIS://" + server + "/W3SVC";
        string app_pools_path = path + "/AppPools";

        /error below.
        var app_pools = new DirectoryEntry(app_pools_path);

        foreach (DirectoryEntry app_pool in app_pools.Children)
        {
//do work
}

Error "Class no registered" error code:2147221164

ON the server open the server manager add new features ==> Web Server (IIS) ==> Management Tools ==> IIS 6 Management Compatibility then check IIS6 Metabase Compatibility. use your original connection string / path

string path = "IIS://" + server + "/W3SVC"; string app_pools_path = path + "/AppPools";

try this please:

     private void StopAppPool(string app_Pool , string server)
    {
        try
        {

            ConnectionOptions co = new ConnectionOptions();
            co.Username = "DomainName\\UserName";
            co.Password = "UserPassword";
            string appPool = "W3SVC/AppPools/" + app_Pool;
            co.Impersonation = ImpersonationLevel.Impersonate;
            co.Authentication = AuthenticationLevel.PacketPrivacy;
            string objPath = "IISApplicationPool.Name='" + appPool + "'";

            ManagementScope scope = new ManagementScope(@"\\" + server + @"\root\MicrosoftIISv2", co);
            using (ManagementObject mc = new ManagementObject(objPath))
            {
                mc.Scope = scope;

                mc.InvokeMethod("Stop", null, null);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
            Console.WriteLine(e.StackTrace);
            Console.WriteLine(e.InnerException);
            Console.WriteLine(e.Data);
        }
       //Console.ReadLine();

    } 

You should avoid using DirectoryEntry to manipulate IIS 7 and above. That's the old API based on IIS ADSI interfaces,

http://msdn.microsoft.com/en-us/library/ms524896(v=vs.90).aspx

IIS 6 Compatibilities might help you out though,

http://blogs.msdn.com/b/narahari/archive/2009/05/13/when-using-directoryservices-to-access-iis-schema-iis6-management-compatibility-pack-needs-to-be-installed-system-runtime-interopservices-comexception-0x80005000.aspx

The best solution (which is also strong typed and more convenient for C# developers) is Microsoft.Web.Administration,

http://www.iis.net/learn/manage/scripting/how-to-use-microsoftwebadministration

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM