ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH [email protected] http://www.uwebaumann.de Was Sie erwartet Nützliche Tips für den ASP.NET-Alltag Logon und Authentifizierung File Upload und Download Datenübergabe zwischen Webseiten Zentrale Fehlerbehandlung Webseiten-Dokumentvorlagen (Templates) Automatische URL-Umleitung (Redirection) Einige komplett nutzlose, aber irgendwie interessante Informationen. Nutzloses Wissen – Teil 1 Die Durchschnittsgeschwindigkeit eines Schmetterlings beträgt 32 km/h. Logon und Authentifizierung Problem Nur authentifizierte User(-gruppen) sollen auf bestimmte Seiten zugreifen dürfen Aufgaben 1. 2. 3. Logon-Seite erstellen Authentifizierung der User gegen beliebige Datenbank bzw. andere Quellen Betreffende Seiten absichern Logon und Authentifizierung Tips & Tricks GenericIdentity-Objekt Rollenbasierte Zugriffskontrolle nicht "aus der Box" möglich Möglich durch Erstellung und Zuweisen eines eigenen GenericPrincipal im Authenticate-Event Speichert User-Identität (Name) GenericPrincipal-Objekt Speichert Identität und Rollen demo Forms Authentifizierung Democode: FormsAuth.sln Nutzloses Wissen – Teil 2 Ungarn exportiert mehr Nilpferde als jedes andere europäische Land. File Upload und Download Problem User sollen Dateien auf dem Webserver in einer Datenbank ablegen können Aufgaben 1. 2. 3. 4. Upload-Seite erstellen Daten aus Upload in SQL Server leiten Download-Seite erstellen Daten aus SQL Server zurück an Browser schicken File Upload und Download Tips & Tricks FORM enctype="multipart/form-data" einfügen INPUT type="file" runat="server" einfügen PostedFile-Objekt Eigenschaft des Input-Controls Eigenschaften des hochgeladenen Files (Größe, MIME-Type, Name) Abspeichern über SaveAs-Methode oder "manuell" über InputStream demo Upload / Download - Directory - SQL Server Democode: UploadDownload.sln Nutzloses Wissen – Teil 3 Der kürzeste burmesische Familienname ist "H". Datenübergabe zwischen Webseiten Problem Ein Eingabeformular soll über mehrere Seiten gehen (Wizard) und Daten aus der vorigen Seite übernehmen Aufgaben 1. 2. Daten in der aktuellen Instanz der Seitenklasse speichern Daten in der Folgeseite über das ContextObjekt auslesen Datenübergabe zwischen Webseiten Tips & Tricks Server.Transfer hält die Anfrage auf dem selben Server Zugriff auf die Instanzvariablen der vorigen Seite ist in Form_Load möglich Context-Objekt Handler-Eigenschaft enthält Referenz auf die Instanz der letzten Seitenklasse Cast auf die Seitenklasse nötig Das ASP.NET Prinzip INETINFO.EXE HTTP Request POST /site/form1.aspx ..... ASPNET_ISAPI.DLL HTTP Response HTTP 1.1 200 OK ..... form1.aspx <%@ WebService language="c#" class= using System.Web.Services; form1_aspx.dll [WebService(Description="Provides a v public class Simple { [WebMethod(Description=„ Returns a nice greeting")] public string Hello() { return "Hello"; } } Assembly Kompilieren Instanzieren ASPNET_WP.EXE Page Class demo Context Object verwenden Nutzloses Wissen – Teil 4 Harvey Kennedy erfand die Schnürsenkel und wurde dadurch reich. Zentrale Fehlerbehandlung Problem Fehler, die irgendwo in der WebApplikation auftreten, sollen zentral registriert bzw. behandelt werden Ein Eintrag in das Applikationslog soll erstellt werden Aufgaben 1. 2. Fehlerbehandlungscode in Global_asax schreiben, Informationen extrahieren System.Diagnostics-Klassen verwenden, um einen Logeintrag zu erstellen Zentrale Fehlerbehandlung Tips & Tricks Die abgefangene Exception ist immer "HTTPUnhandledException", die "wirkliche" Exception steht in InnerException EventLog-Objekt Alle Funktionen zum Umgang mit Eventlogs demo ASP.NET Logfiles Democode: CentralExceptions.sln Nutzloses Wissen – Teil 5 Der Mensch blinzelt normalerweise 25000 Mal pro Tag. Seitenvorlagen (Templates) Problem Eine Seitenvorlage soll HTML enthalten, das auf jeder Seite vorkommt Lösung 1. 2. 3. Seitenvorlage (Template) erstellen Render-Methode überschreiben Content-Seiten von Master-Seite ableiten Seitenvorlagen (Templates) Tips & Tricks Render-Methode überschreiben ist einfach zu realisieren und sehr performant, aber etwas schlecht zu warten (kein WYSWYG) Alternative: Header und Footer als Controls erstellen, in OnPreRender-Event einfügen (WYSWYG über Visual Studio) demo ASP.NET Templates Democode: SimpleTemplates.sln Nutzloses Wissen – Teil 6 Gold ist das 16. seltenste Element auf der Welt. Automatische URL-Umleitung Problem Seitenaufrufe sollen auf eine andere URL umgeleitet werden, ohne daß der User dies bemerkt (z.B. bei "Umzug" der Site) Vorbild: mod_rewrite von Apache Lösung 1. 2. BeginRequest-Event abfangen RewritePath-Funktion verwenden, um URL "umzuschreiben" Automatische URL-Umleitung Tips & Tricks Ursprüngliche URL kann für "Weiterverwendung" im Context-Objekt gespeichert werden (Items-Aufzählung) demo URL-Umleitung Democode: ReDirect.sln Vielen Dank! Fragen kostet nichts… Weitere Informationen Nutzloses Wissen Hanswilhelm Haefs: Handbuch des nutzlosen Wissens, dtv Verlag Forms Authentication http://portals.devx.com/SummitDays/Article/6 666/0/page/1 URL Rewriting http://www.codeproject.com/aspnet/URLRewri ter.asp ASP.NET Templates http://www.wilsondotnet.com Download der Beispiele http://www.uwebaumann.de ASP.NET allgemein http://www.asp.net