BLOGas.lt
Sukurk savo BLOGą Kitas atsitiktinis BLOGas

Prieiga prie IIS7 konfigūracijos iš API

Parašė Sergejus | 2011-02-14 20:57

Kaip žinia, pradedant nuo 7 versijos IIS architektūra tapo modulinė, o visas konfigūravimas iš metaduomenų bazės buvo perkeltas į XML konfigūracijos failus. Bet nedaugelis žino, kad kartu atsirado ir .NET API, skirtas darbui su IIS. Minėtas API leidžia pasiekti daugelį IIS ir sudiegtų modulių nustatymus. Norėdami pradėti darbą su IIS7 API, užtenka pridėti nuorodą į biblioteką Microsoft.Web.Administration.dll iš katalogo %windir%\System32\inetsrv. API naudojimosi pavyzdys pateiktas žemiau:

var serverManager = new ServerManager();
foreach (var site in serverManager.Sites)
{
    Console.WriteLine("Site: {0}", site.Name);
    foreach (var app in site.Applications)
    {
        var appPool = serverManager.ApplicationPools[app.ApplicationPoolName];
        var info = new
        {
            Path = app.VirtualDirectories.First().PhysicalPath,
            Identity = appPool.ProcessModel.IdentityType == ProcessModelIdentityType.SpecificUser ?
                       appPool.ProcessModel.UserName :
                       appPool.ProcessModel.IdentityType.ToString(),
            AppPool = app.ApplicationPoolName,
            AppPoolMode = appPool.ManagedPipelineMode,
            Is32Bit = appPool.Enable32BitAppOnWin64,
            Framework = appPool.ManagedRuntimeVersion
        };

        Console.WriteLine(info);
    }
}

Aukščiau pateiktas kodas kiekvienam Web saitui išves:

  • fizinį kelią iki aplikacijos
  • vartotoją, kurio vardu veikia AppPool
  • aplikacijos naudojamą AppPool‘ą
  • požymį, kokiu režimu veikia AppPool (integruotas ar klasikinis)
  • architektūrą, kurioje veikia AppPool (x86 / x64)
  • naudojamo .NET Framework versijos numerį

Svarbu pažymėti, nors pateiktame pavyzdyje vyksta tik skaitymo operacijos, rašymo operacijos irgi yra palaikomas (pavyzdžiui, naujo saito pridėjimas). Apibendrinant, labai šaunu kad vis daugiau pagrindinių Windows Server komponentų įgauna .NET API, kas ypatingai palengvina tam tikrus automatizavimo scenarijus!

Rodyk draugams

IIS7 klaida "HTTP Error 500.19 - Internal Server Error"

Parašė Sergejus | 2010-12-29 21:56

Darbe kolegos susidūrė su įdomia IIS 7 problema, kuri pasireiškė tam tikruose Windows Server 2008 serveriuose. Sudiegus ASP.NET MVC 2 aplikaciją ir bandant ją pakrauti – įvykdavo IIS klaida „HTTP Error 500.19 - Internal Server Error“.

Module: IIS Web Core

Notification: BeginRequest

Handler: Not yet determined

Error Code: 0×80070021

Config Error This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is either by default (overrideModeDefault="Deny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="false".

Sprendimas (net keli) pasirodo yra paprastas, bet pakankamai sunkiai surandamas. Klaidos priežastis – nauja IIS 7 galimybė Feature Delegation, kuri leidžia uždrausti keisti tam tikrus IIS nustatymus, kaip, pavyzdžiui, pridėti naujus modulius (angl. modules). Šiuo atveju, reikėjo leisti keisti modules ir handlers nustatymus iš aplikacijos Web.config failo.

Sprendimo būdas #1 (iš IIS Manager)

IIS Manager lange pasirinkite Feature Delegation punktą:

image

Suraskite punktą Modules ir iš kontekstinio meniu pasirinkite Read/Write:

image

Pakartokite tą pati su Handlers.

Sprendimo būdas #2 (iš komandinės eilutės)

Įvykdykite žemiau pateiktas komandas iš komandinės eilutės (administratoriaus teisėmis):

%windir%\system32\inetsrv\appcmd.exe unlock config /section:system.webServer/handlers

%windir%\system32\inetsrv\appcmd.exe unlock config /section:system.webServer/modules

Sprendimo būdas #3 (iš konfigūracijos failo)

Atidarykite globalų IIS konfigūracijos failą %windir%\system32\inetsrv\config\applicationHost.config. Jame suraskite sekciją modules:

<section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />

Pakeiskite į overrideModeDefault="Allow".

Pakartokite tą pati su handlers ir išsaugokite pakeitimus.

 

Tikiuosi šis straipsnis ateityje išsaugos jums laiką ieškant šios problemos sprendimo būdų.

Rodyk draugams