Using UrlRewriter.NET in IIS7

When migrating an IIS6 website to IIS7 you probably want to keep an existing UrlRewriter.NET configuration and migrate to the official Microsoft URL Rewriter Module for IIS 7 later on.

Here is the important excerpt from „Web.config“:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <add name="UrlRewriter"
            type="Intelligencia.UrlRewriter.RewriterHttpModule" />
    </modules>
</system.webServer>

Thanks to Rainer who figured this out from this posting.

Another good discussion can be found in the article „Wildcard script mapping and IIS 7 integrated pipeline“ on the IIS website and the article „Use a Single Web.Config for IIS6 and IIS7„.

Vorsicht bei „Debug.Assert“-Aufrufen in ASP.NET (2.0)-Webanwendungen!

Über vier Manntage hat mich insgesamt das folgende (in meinen Augen falsche) Verhalten von ASP.NET gekostet.

Beschreibung

  • Eine ASP.NET 2.0-Webanwendung läuft in der Testumgebung ganz normal und auch im Echtbetrieb.
  • Zu nicht-vorhersehbaren Zeiten „hängt“ die Anwendung auf einmal. D.h. die Anwendung reagiert für den Benutzer einfach nicht und der Browser lädt ewig.
  • Wenn ich dann den entsprechenden „w3wp.exe“ kille (ich habe extra einen AppPool nur für die eine Webanwendung gemacht), dann wird sofort automatisch ein neuer w3wp.exe gestartet und die Anwendung läuft wieder normal.

Ursache

Ein Aufruf von Debug.Assert in einer von der Webanwendung verwendeten DLL hat den Prozess zum Hängen gebracht.

  • Debug.Assert direkt in einer
    Webanwendung ausgeführt hält den „w3wp.exe“ nicht an, sondern wird
    schlicht ignoriert.
  • Debug.Assert indirekt
    in einer DLL, die von der Webanwendung verwendet wird, hält den
    w3wp.exe an und kann nur durch killen des „w3wp.exe“ beendet werden.

Lösung

Als schnellen Workaround habe ich jetzt alle Debug.Assert-Aufrufe in der DLL auskommentiert. Natürlich könnt Ihr auch schlicht alles im Release-Modus kompilieren, das ist aber in meinem Fall nicht nötig gewesen (keine Performance-Verbesserungen).