Robbi, Tobbi und das Fliewatüüt

Erlebnisse in der IT-Welt und mehr…

Durchsuche Beiträge in ASP.NET

Gestern war ich auf der Suche nach einem hartnäckigen, sich gut tarnenden Fehler in einer ASP.NET-Applikation unter .NET 3.5 SP 1 auf einem IIS 6 unter Windows Server 2003. Scheinbar sporadisch und nicht reproduzierbar verloren Anwender ab und zu die Session. Genauer gesagt, kam es zu einem unbeabsichtigten Restart der Application. Nachdem als Ursache die üblichen Verdächtigen ausgeschlossen werden konnten, habe ich letztendlich die _shutDownMessage der HttpRuntime durch Hinzufügen des folgenden Codes in die Global.cs analysieren können:

void Application_End(object sender, EventArgs e)
{
  var runtime = (HttpRuntime)typeof(HttpRuntime).InvokeMember("_theRuntime", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.GetField, null, null, null);

  if (runtime != null) {
    var shutDownMessage = (string)runtime.GetType().InvokeMember("_shutDownMessage", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField, null, runtime, null);

    var shutDownStack = (string)runtime.GetType().InvokeMember("_shutDownStack", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField, null, runtime, null);

    if (!EventLog.SourceExists(".NET Runtime")) {
      EventLog.CreateEventSource(".NET Runtime", "Application");
    }

    var log = new EventLog { Source = ".NET Runtime" };
    log.WriteEntry(String.Format("\r\n\r\n_shutDownMessage={0}\r\n\r\n_shutDownStack={1}", shutDownMessage, shutDownStack), EventLogEntryType.Error);
  }
}

Dadurch konnte ich die Fehlermeldung dir change or directory rename HostingEnvironment initiated caused shutdown directory rename sehen. Ursache war demnach ein Löschen temporär angelegter Ordner in einem Unterverzeichnis der Applikation.

Die permanente Überwachung des Applikationsordners (und seiner Unterordner) führte dazu, dass bei einem Löschen eines Ordners in dieser Struktur die Applikation neu gestartet wurde. Die File Change Notification lässt sich durch Eingriffe in die Registry ausschalten, aber dies war in diesem Fall weder erwünscht noch erlaubt.

Vielmehr habe ich nach kurzer Recherche eine Lösung in Microsofts ASP.NET-Forum gefunden:

  void Application_Start(object sender, EventArgs e)
  {
    //FIX disable AppDomain restart when deleting subdirectory
    //This code will turn off monitoring from the root website directory.
    //Monitoring of Bin, App_Themes and other folders will still be operational, so updated DLLs will still auto deploy.

    var p = typeof(HttpRuntime).GetProperty("FileChangesMonitor", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static);

    var o = p.GetValue(null, null);

    var f = o.GetType().GetField("_dirMonSubdirs", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.IgnoreCase);

    var monitor = f.GetValue(o);

    var m = monitor.GetType().GetMethod("StopMonitoring", BindingFlags.Instance | BindingFlags.NonPublic);

    m.Invoke(monitor, new object[] { });
  }

Seitdem läuft die Anwendung ohne einen einzigen Session Restart durch.

Kick it on dotnet-kicks.de

Der Titel sagt eigentlich schon alles: Die eigentlich für das Debuggen von Webanwendungen mit dem Internet Explorer unabdingbaren Tools IETester und DebugBar sind in neuen Versionen erschienen und unterstützen jetzt auch die Release-Version des IE8.

Der kostenfreie IETester stellt einen Webbrowser dar, der die Rendering und JavaScript Engines von IE5.5, IE6, IE7 und IE8 in einem Prozess (auf Windows XP oder Vista) nutzen kann.

DebugBar stellt ein umfangreiches Toolset zum Debuggen (sic!) von Webanwendungen bereit. Für den privaten Gebrauch ist es ebenfalls kostenfrei, ansonsten halten sich die Lizenzkosten durchaus in Grenzen.

Abgerundet wird das Konglomerat durch eine neue Version von Companion.JS, einem erweiterten JavaScript-Debugger, der zumindest in der Beta-Version noch ohne Kosten herunterladbar ist.

http://www.my-debugbar.com/wiki/

Kick it on dotnet-kicks.de

Die sehenswerte Session von Rob Conery auf der MIX09 zum Thema ASP.NET MVC mitsamt dem aktuellen Stand der Demo-Applikation Storefront wurde veröffentlicht.

http://sessions.visitmix.com/MIX09/T62F

http://mvcsamples.codeplex.com/SourceControl/ListDownloadableCommits.aspx

Kick it on dotnet-kicks.de

Microsoft hat wie erwartet die finale Version 1.0 des ASP.NET MVC pünktlich zur MIX09 bereitgestellt.

Sicherlich ist es dann auch nur noch eine Frage von Stunden, bis Rob Conery den Quellcode seiner MVC Storefront Applikation zur Verfügung stellen wird.

http://www.microsoft.com/downloads/details.aspx?FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b&displaylang=en

http://blog.wekeroad.com/mvc-storefront/

Kick it on dotnet-kicks.de

Gerade zufällig auf einen Blog-Beitrag von Jon Hobbs-Smith gestoßen, in dem er eine Liste von 25 hervorragenden Tipps rund um den Einsatz von jQuery aufstellt.

http://www.tvidesign.co.uk/blog/improve-your-jquery-25-excellent-tips.aspx

Kick it on dotnet-kicks.de

Einhergehend mit einer Neugestaltung der Homepage hat das Mono-Project die Version 2.0 von Mono veröffentlicht.

Hier gehts zum Download:
http://www.go-mono.com/mono-downloads/download.html

Hier die Release Notes:
http://www.mono-project.com/Release_Notes_Mono_2.0

Hier der Mono Migration Analyzer:
http://mono-project.com/MoMA

Kick it on dotnet-kicks.de

Chris Brandsma gibt in seinem Blog “Programmers on Fire” Tipps zum Debuggen von ASP.NET Webseiten mit SSL:

http://www.chrisbrandsma.com/2007/04/debugging-aspnet-web-site-with-ssl.html

Kick it on dotnet-kicks.de

Das lang erwartete Service Pack 1 für Microsofts Visual Studio 2008 ist fertiggestellt und ab sofort in mehreren  Sprachversionen (u.a. deutsch und eglisch) frei verfügbar. Beinhaltet ist auch das .NET Framework 3.5 SP1.

http://www.microsoft.com/downloads/details.aspx?FamilyID=27673c47-b3b5-4c67-bd99-84e525b5ce61&DisplayLang=en

Hier eine kurze Liste der Änderungen des Visual Studio 2008 SP1:

  • Verbesserte WPF-Designer
  • Support für SQL Server 2008
  • ADO.NET Entity Designer
  • Komponenten und Tools für Visual Basic und Visual C++ (inkl. MFC-basiertes Ribbon)
  • Verbesserungen am Visual Studio Team System Team Foundation Server (TFS)
  • Erweiterte Unterstützung für JavaScript und AJAX sowie Verbesserungen am Deployment von Webseiten

Und das verspricht das .NET Framework 3.5 SP1:

  • Performance-Steigerungen bis zu 40% von WPF-basierten Applikationen
  • WCF-Verbesserungen für mehr Kontrolle des Datenzugriffs
  • ADO.NET Entity Framework
  • ADO.NET Data Services
  • Unterstützung der neuen Features des SQL Server 2008

http://msdn.microsoft.com/en-us/vstudio/products/cc533447.aspx

Unabdingbar ist dieses Service Pack übrigens für alle, die mit Visual Studio 2008 und dem neuen Microsoft SQL Server 2008 arbeiten möchten.

Kick it on dotnet-kicks.de

Eine schöne Sammlung eigener und auch fremder Cheat Sheets mit Fokus auf .NET und besonders ASP.NET findet man bei John Sheehan.

http://john-sheehan.com/blog/index.php/net-cheat-sheets/

Kick it on dotnet-kicks.de

Das Team von LearnVisualStudio.net hat unter dem Namen HeroCoder ihr erstes kommerzielles Produkt für Softwareentwickler veröffentlicht

Hero Membership tritt an, die Lücke im ASP.NET Membership Management zu schliessen, namentlich die Remoteverwaltung. Neben den üblichen Benutzerverwaltungsaufgaben wie Neuanlage oder Unlocken von Accounts lassen sich des weiteren auch Suchen über erweiterte Kriterien wie z.B. das letzte Login-Datum etc. pp. durchführen. Das ganze gepaart mit einer netten Ajax-Oberfläche, umfangreichen Einführungsvideos (wenn die Jungs das nicht können, dann weiss ich auch nicht… ;) ), dem kompletten Quelltext und einem attraktiven Einführungspreis scheint das Produkt eine klare Empfehlung zu sein.

ASP.NET Membership database remote administration with Hero Membership.

Kick it on dotnet-kicks.de

Zufällig bin ich gerade im PDA-Dev-Forum auf eine Seite aufmerksam geworden, die sich hauptsächlich mit BlogCasts (so etwas wie WebCasts, nur kürzer) zu Microsoft-Technologien beschäftigt. Über 250 sind es derzeit:

 http://www.blogcastrepository.com/

Kick it on dotnet-kicks.de

Heute hatte ich das nette Problem, einen Suchdialog in einer ASP.NET-Webseite zu realisieren. Dabei sollte ein modales Fenster geöffnet werden, an das Parameter übergeben werden und nach erfolgreicher Suche das entsprechende Ergebnis zurückgegeben wird.

Nunja, ich bin weder ASP.NET-GUI- noch JavaScript-Guru, aber dennoch möchte ich meinen Code der Allgemeinheit nicht vorenthalten. weiter lesen

Kick it on dotnet-kicks.de

Nick Bradbury’s wirklich exzellenter CSS- und XHTML-Editor TopStyle erfährt ein lang erwartetes Update. Die aktuelle Beta wurde jetzt veröffentlicht: http://nick.typepad.com/blog/2007/08/ann-topstyle-35.html

Kick it on dotnet-kicks.de

Nur für den Fall, dass auch andere über eine solche Fehlermeldung stolpern, wenn sie ein datengebundenes Steuerelement an eine Objektdatenquelle binden und dort ein Property vom Typ System.DateTime nutzen:

Der Wert von Parameter “EingangsDatum” kann nicht von “System.String” in “System.DateTime” konvertiert werden.

Wir sind nicht allein ;)

Kick it on dotnet-kicks.de