ASP.NET
Tips & Tricks
Uwe Baumann
Technologieberater
Developer Group
Microsoft GmbH
uwebaum@microsoft.com
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