массовое обновление .net в iis6 - PullRequest
0 голосов
/ 19 октября 2011

У нас есть около 200 веб-сайтов (на 3 отдельных серверах, всего 600), которые нам нужно обновить для работы на .net 4 framework.В настоящее время они настроены на работу в .net 2. Кто-нибудь знает, есть ли способ сделать это с помощью консольной программы ac #?Спасибо!

Редактировать: я нашел инструмент под названием IIS Metabase Explorer.Используя это вместе с некоторым кодом, который я нашел некоторое время назад для настройки сайта в IIS 6, я придумал следующий код.Надеюсь, это поможет другим.

Я бы назвал это как

UpdateSiteToDotNet4("mytestsite", "mywebserver", @"D:\inetpub\wwwroot\", "DotNet4");


private void UpdateSiteToDotNet4(string siteName, string server, string serverPath, string newAppPoolId)
    {
        var service = new DirectoryEntry("IIS://" + server + "/W3SVC");

        DirectoryEntries sites = service.Children;

        bool found = false;

        foreach (DirectoryEntry siteEntry in sites) 
        {
            var siteId = siteEntry.Name;
            DirectoryEntries siteSettings = siteEntry.Children; //Root

            foreach (DirectoryEntry siteSetting in 
                from DirectoryEntry siteSetting in siteSettings 
                where siteSetting.SchemaClassName == "IIsWebVirtualDir" 
                let siteRoot = siteSetting.Properties["Path"][0].ToString() 
                where siteRoot.ToLower().Trim() == (serverPath + siteName).ToLower().Trim()
                select siteSetting)
            {

                siteSetting.Properties["AppPoolId"].Value = newAppPoolId;
                siteSetting.CommitChanges();

                //Update to version v4.0.30319
                var aspnet = string.Format(@"{0}\Microsoft.NET\Framework\v{1}\aspnet_regiis.exe", Environment.GetEnvironmentVariable("windir"), "4.0.30319");

                var startInfo = new ProcessStartInfo(aspnet)
                                    {
                                        Arguments = string.Format("-sn \"{0}\"", "W3SVC/" + siteId + "/Root"),
                                        WindowStyle = ProcessWindowStyle.Hidden,
                                        UseShellExecute = false,
                                        CreateNoWindow = true
                                    };


                var process = new Process { StartInfo = startInfo };
                process.Start();
                process.WaitForExit();
                process.Dispose(); 

                found = true;
                break;
            }

            if (found) break;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...