Изменить свойства пула приложений - PullRequest
0 голосов
/ 29 октября 2011

Есть ли способ сделать этот код более приятным?

ServerManager serverManager = new ServerManager();
            ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools;

            foreach (var site in serverManager.Sites)
            {

                //Trace.WriteLine("Site: {0}", site.Name);)
                foreach (var app in site.Applications)
                {

                    if (app.Path.EndsWith("Report") || app.Path.EndsWith("Data"))
                    {
                        Trace.WriteLine("ReportApi     "  + app.ApplicationPoolName);

                        applicationPoolCollection[app.ApplicationPoolName].Enable32BitAppOnWin64 = true;
                        applicationPoolCollection[app.ApplicationPoolName].ManagedRuntimeVersion = "v4.0";


                    }
                }
            }

            serverManager.CommitChanges();

Второй вопрос: что произойдет, если я запусту его на ПК с iis6

Спасибо за помощь.

1 Ответ

3 голосов
/ 29 октября 2011

выглядит довольно аккуратно для меня.Если вы хотите немного сплющить вещи, вы можете использовать метод расширения Cast (который работает с типами IEnumerable для преобразования их в IEnumerable<T>) в , чтобы сделать вещи более LINQy.Это делает вещи более понятными для одних, более непрозрачными для других.Выберите.

var reportOrDataApps = serverManager
    .Sites
    .Cast<Site>()
    .SelectMany(s => s.Applications.Cast<Application>())
    .Where(app => app.Path.EndsWith("Report") || app.Path.EndsWith("Data"))

foreach(var app in reportOrDataApps)
{
    Trace.WriteLine("ReportApi     "  + app.ApplicationPoolName);
    applicationPoolCollection[app.ApplicationPoolName].Enable32BitAppOnWin64 = true;
    applicationPoolCollection[app.ApplicationPoolName].ManagedRuntimeVersion = "v4.0";
}

РЕДАКТИРОВАТЬ:

Похоже, что коллекции уже реализуют IEnumerable<T>, поэтому вы можете сократить LINQ:

var reportOrDataApps = serverManager
    .Sites
    .SelectMany(s => s.Applications)
    .Where(app => app.Path.EndsWith("Report") || app.Path.EndsWith("Data"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...