Қолданба пулының сипаттарын өзгерту

Осы кодты жақсартудың қандай да бір жолы бар ма?

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 ғана бар компьютерде іске қосылсам, не болады?

Көмек үшін алғыс айтамыз.

0
Кодыңызда қандай қате бар? «Ницца» өте дәл тұжырымдамасы емес - ретінде коды өте айқын көрінеді.
қосылды автор Alexei Levenkov, көзі

1 жауаптар

Looks pretty tidy to me. If you want to flatten things a bit, you can use the Cast extension method (which operates on types of IEnumerable to convert them to IEnumerable) to make things more LINQy. It makes things clearer to some, more opaque to others. Take your pick.

var reportOrDataApps = serverManager
    .Sites
    .Cast()
    .SelectMany(s => s.Applications.Cast())
    .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";
}

EDIT:

It appears that the collections already implement IEnumerable so you can shorten the LINQ:

var reportOrDataApps = serverManager
    .Sites
    .SelectMany(s => s.Applications)
    .Where(app => app.Path.EndsWith("Report") || app.Path.EndsWith("Data"))
3
қосылды
LINQ-де осындай проблемаларды белгілеу әдетте дұрыс кодты енгізеді (аз ұя салу, кем күрделілік). Егер сіз қазірдің өзінде болмаған болсаңыз, белгілі бір құндылыққа ие боласыз.
қосылды автор spender, көзі
+1 үлгісі үшін ... Егер сіз/командаңыз LINQ-мен білмеген болса, кірістірілген таңдау шын мәнінде не болғанын оңай жасыруы мүмкін (2 foreach-тен өзгеше).
қосылды автор Alexei Levenkov, көзі