Posts

Er worden posts getoond met het label IIS

IIS: Application pool recycling vs IIS Reset

Om het verschil tussen IIS Reset en Application pool recycling uit te leggen, eerst even een stukje uitlog over hoe IIS werkt. IIS kent drie hoofdcomponenten: 1. Http.sys Dit is een kernelcomponent wat betekent dat het geen onderdeel is van de user mode processen, zoals de W3WP.Exe. Een kernelcomponent gebruikt nooit virtueel geheugen van user processen. Het is geisoleerd en gescheiden. Http.sys heeft drie belangrijke rollen: (client) connection management; Routing requests van browsers. Dit houdt in dat http.sys er voor zorgt dat de requests bij de juiste application pool queue terecht komen. Beheren van de response cache. 2. Worker processen Worker processen zijn de application pools en elke application pool en voor elke application pool wordt een instantie van W3WP.exe opgestart. Een application pool handelt alle content af zoals html bestanden, afbeeldingen, scripts, css bestanden, maar ook dynamische content zoals ASP.NET applicaties. Om deze reden is de stat...

Werking Basic Authentication

Afbeelding
In IIS is het mogelijk om gebruik te maken van Basic Authentication. De werking van Basic Authentication (BA) is als volgt. 1) De browser maakt een request naar een pagina die BA gebruikt 2) IIS stuurt een 401 naar de browser met een 'WWW-Authenticate' header. Door deze header weet de browser dat er inloggegevens nodig zijn. 3) De browser toont een login-scherm waarin de gebruiker zijn credentials kan invoeren 4) De browser plakt de gebruikersnaam en wachtwoord aan elkaar met daartussen een dubbele punt (:). Vervolgens maakt hij hier een Base64-string van. Daarna maakt de browser een Authentication header aan met als waarde "Basic ", bijv:  Authorization: Basic QXNwZWN0XHJzLjExNDE0Ny1saXZlOkZkNyoxWCV4 5) IIS decrypt de Base64-string en gaat na of de opgegeven gebruiker voldoende rechten heeft. Zo ja, dan stuurt IIS een response header terug met code 200, oftewel OK. Als de gebruiker onbekend is, wordt wederom het login-scherm getoond. Schematisch ziet dit er a...

IIS Keep Alive en three way handshake

Afbeelding
Keep Alive en Keep Alive Timeout IIS Keep Alive kan aan en uit gezet worden. Standaard staat deze ingeschakeld en wanneer ingeschakeld dan wordt ook de Keep Alive Timeout uitgelezen, welke standaard op 120 seconden staat. De Keep Alive zorgt er voor dat een verbinding open blijft voor dezelfde client. Pas als er geen requests meer binnen zijn gekomen gedurende het aantal seconden van de Keep Alive Timeout, dan pas sluit IIS de verbinding. Het open houden van een verbinding heeft als voordeel dat er niet per request de three-way-handshake uitgevoerd hoeft te worden. Als de Keep Alive uit staat, dan wordt de connection na elk request gesloten. Bij elk request  wordt dan de three-way-handshake uitgevoerd en bij veel requests werkt dit erg vertragend. Three way handshake De three way handshake is de manier die TCP gebruikt om een vertrouwde TCP/IP verbinding op te zetten. TCP's three way handshake is ook bekend als SYN-SYN-ACK omdat er drie berichten verstuurd worden door TCP...

Web Deploy en Visual Studio

Na de installatie van Web deploy op de IIS Server, worden er twee lokale gebuikers aangemaakt:  WebDeployAdmin en WebDeployConfigWriter. Voor deze gebruikers wordt vervolgens een wachtwoord aangemaakt en dit wachtwoord verloopt na verloop van tijd. Het resultaat is dat na het verlopen van deze tijd je niet meer kan publishen vanuit Visual Studio. De oplossing die ik voor dit probleem heb gehanteerd is het uitvoeren van het script  "AddDelegationRules.ps1". Dit script is te vinden in de map  "C:\Program Files\IIS\Microsoft Web Deploy V3\Scripts\". Om het script uit te voeren open je Powershell en zorg je er voor dat de policy aanstaat die er voor zorgt dat je lokaal Powershell scripts mag uitvoeren. Dit kan overigens met dit command (in de powershell console):  set-executionpolicy remotesigned. Nadat dit commando is uitgevoerd kan je het script uitvoeren: cd  "C:\Program Files\IIS\Microsoft Web Deploy V3\Scripts\" .\  AddDelegationRules.ps1 Dit scrip...

[IIS] Site wordt niet geparsed / aangeroepen / geladen

Als je een site in IIS heb gehangen en hem vervolgens wilt benaderen en je krijgt de volgende (soortgelijke) melding: [Stacktrace] [NullReferenceException: Object reference not set to an instance of an object.] System.Web.Hosting.ISAPIWorkerRequestInProc.GetServerVariable(String name) +349 System.Web.Hosting.ISAPIWorkerRequest.ReadRequestHeaders() +95 System.Web.Hosting.ISAPIWorkerRequest.GetKnownRequestHeader(Int32 index) +55 System.Web.HttpRequest.get_UserLanguages() +33 System.Web.HttpContext.UserLanguageFromContext() +32 System.Web.HttpContext.CultureFromConfig(String configString, Boolean requireSpecific) +75 System.Web.ThreadContext.SetRequestLevelCulture(HttpContext context) +8767807 System.Web.ThreadContext.Enter(Boolean setImpersonationContext) +247 System.Web.HttpApplication.OnThreadEnterPrivate(Boolean setImpersonationContext) +42 System.Web.ApplicationStepManager.ResumeSteps(Exception error) +120 Dan heb je waarschijnlijk IIS geïnstalleerd nadet je het .NET Framew...

[IIS] Firefox en IIS Windows security

Als in IIS integrated security aanstaat en anonieme toegang niet toegestaan is, wordt in Firefox een dialoogvenster getoond waarin je een gebruikersnaam en wachtwoord moet opgeven. Dit is echter niet het geval bij Internet Explorer. In Firefox kan dit 'probleem' als volgt worden opgelost: 1. Typ in de adresbalk in about:config 2. Je krijgt een melding (firefox 3 en hoger) en druk op de button 3. Typ in de balk network.automatic 4. Dubbelklik op network.automatic-ntlm-auth.trusted-uris 5. Voer hier het adres in. Meerdere adressen kunnen komma gescheiden worden ingevoerd (www.domain.nl, http://localhost/) 6. Sluit het tabblad