29
ASP.NET ASP.NET Tips & Tricks Tips & Tricks Uwe Baumann Uwe Baumann Technologieberater Technologieberater Developer Group Developer Group Microsoft GmbH Microsoft GmbH [email protected] [email protected] http://www.uwebaumann.de http://www.uwebaumann.de

ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH [email protected] [email protected]

Embed Size (px)

Citation preview

Page 1: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

ASP.NET ASP.NET Tips & TricksTips & Tricks

Uwe BaumannUwe Baumann

TechnologieberaterTechnologieberaterDeveloper GroupDeveloper GroupMicrosoft GmbHMicrosoft GmbH

[email protected]@microsoft.comhttp://www.uwebaumann.dehttp://www.uwebaumann.de

Page 2: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Was Sie erwartetWas Sie erwartet

NützlicheNützliche Tips für den ASP.NET-Alltag Tips für den ASP.NET-Alltag Logon und AuthentifizierungLogon und Authentifizierung File Upload und DownloadFile Upload und Download Datenübergabe zwischen WebseitenDatenübergabe zwischen Webseiten Zentrale FehlerbehandlungZentrale Fehlerbehandlung Webseiten-Dokumentvorlagen (Templates)Webseiten-Dokumentvorlagen (Templates) Automatische URL-Umleitung (Redirection)Automatische URL-Umleitung (Redirection)

Einige komplett Einige komplett nutzlosenutzlose, aber irgendwie , aber irgendwie interessante Informationen.interessante Informationen.

Page 3: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Nutzloses Wissen – Nutzloses Wissen – Teil 1Teil 1Die Durchschnittsgeschwindigkeit eines Die Durchschnittsgeschwindigkeit eines

Schmetterlings beträgt 32 km/h.Schmetterlings beträgt 32 km/h.

Page 4: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Logon und AuthentifizierungLogon und Authentifizierung

ProblemProblem Nur authentifizierte User(-gruppen) sollen Nur authentifizierte User(-gruppen) sollen

auf bestimmte Seiten zugreifen dürfenauf bestimmte Seiten zugreifen dürfen

AufgabenAufgaben1.1. Logon-Seite erstellenLogon-Seite erstellen

2.2. Authentifizierung der User gegen beliebige Authentifizierung der User gegen beliebige Datenbank bzw. andere QuellenDatenbank bzw. andere Quellen

3.3. Betreffende Seiten absichernBetreffende Seiten absichern

Page 5: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Logon und AuthentifizierungLogon und Authentifizierung

Tips & TricksTips & Tricks Rollenbasierte Zugriffskontrolle nicht "aus Rollenbasierte Zugriffskontrolle nicht "aus

der Box" möglichder Box" möglich Möglich durch Erstellung und Zuweisen Möglich durch Erstellung und Zuweisen

eines eigenen eines eigenen GenericPrincipalGenericPrincipal im im Authenticate-EventAuthenticate-Event

GenericIdentity-ObjektGenericIdentity-Objekt Speichert User-Identität (Name)Speichert User-Identität (Name)

GenericPrincipal-ObjektGenericPrincipal-Objekt Speichert Identität und RollenSpeichert Identität und Rollen

Page 6: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Forms Forms AuthentifizierungAuthentifizierungDemocode: FormsAuth.slnDemocode: FormsAuth.sln

demodemo

Page 7: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Nutzloses Wissen – Nutzloses Wissen – Teil 2Teil 2Ungarn exportiert mehr Nilpferde als jedes Ungarn exportiert mehr Nilpferde als jedes

andere europäische Land.andere europäische Land.

Page 8: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

File Upload und DownloadFile Upload und Download

ProblemProblem User sollen Dateien auf dem Webserver in User sollen Dateien auf dem Webserver in

einer Datenbank ablegen könneneiner Datenbank ablegen können

AufgabenAufgaben1.1. Upload-Seite erstellenUpload-Seite erstellen

2.2. Daten aus Upload in SQL Server leitenDaten aus Upload in SQL Server leiten

3.3. Download-Seite erstellenDownload-Seite erstellen

4.4. Daten aus SQL Server zurück an Browser Daten aus SQL Server zurück an Browser schickenschicken

Page 9: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

File Upload und DownloadFile Upload und Download

Tips & TricksTips & Tricks FORM enctype="FORM enctype="multipart/form-data"multipart/form-data"

einfügeneinfügen INPUT type="file" runat="server"INPUT type="file" runat="server" einfügen einfügen

PostedFile-ObjektPostedFile-Objekt Eigenschaft des Input-ControlsEigenschaft des Input-Controls Eigenschaften des hochgeladenen FilesEigenschaften des hochgeladenen Files

(Größe, MIME-Type, Name)(Größe, MIME-Type, Name) Abspeichern über Abspeichern über SaveAsSaveAs-Methode oder -Methode oder

"manuell" über "manuell" über InputStreamInputStream

Page 10: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Upload / DownloadUpload / Download- Directory - Directory - SQL Server- SQL ServerDemocode: UploadDownload.slnDemocode: UploadDownload.sln

demodemo

Page 11: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Nutzloses Wissen – Nutzloses Wissen – Teil 3Teil 3Der kürzeste burmesische Der kürzeste burmesische

Familienname ist "H".Familienname ist "H".

Page 12: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Datenübergabe zwischen WebseitenDatenübergabe zwischen Webseiten

ProblemProblem Ein Eingabeformular soll über mehrere Ein Eingabeformular soll über mehrere

Seiten gehen (Wizard) und Daten aus der Seiten gehen (Wizard) und Daten aus der vorigen Seite übernehmenvorigen Seite übernehmen

AufgabenAufgaben1.1. Daten in der aktuellen Instanz der Daten in der aktuellen Instanz der

Seitenklasse speichernSeitenklasse speichern

2.2. Daten in der Folgeseite über das Daten in der Folgeseite über das ContextContext--Objekt auslesenObjekt auslesen

Page 13: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Datenübergabe zwischen WebseitenDatenübergabe zwischen Webseiten

Tips & TricksTips & Tricks Server.TransferServer.Transfer hält die Anfrage auf dem hält die Anfrage auf dem

selben Serverselben Server Zugriff auf die Instanzvariablen der vorigen Zugriff auf die Instanzvariablen der vorigen

Seite ist in Seite ist in Form_LoadForm_Load möglich möglich

Context-ObjektContext-Objekt HandlerHandler-Eigenschaft enthält Referenz auf -Eigenschaft enthält Referenz auf

die Instanz der letzten Seitenklassedie Instanz der letzten Seitenklasse Cast auf die Seitenklasse nötigCast auf die Seitenklasse nötig

Page 14: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Das ASP.NET PrinzipDas ASP.NET Prinzip

POST /site/form1.aspx.....

INETINFO.EXE

ASPNET_WP.EXE<%@ WebService language="c#" class=<%@ WebService language="c#" class=using System.Web.Services;using System.Web.Services;

[WebService(Description="Provides a v[WebService(Description="Provides a vpublic class Simple public class Simple { [WebMethod(Description=„{ [WebMethod(Description=„Returns a nice greeting")] Returns a nice greeting")] public string Hello()public string Hello() {{ return "Hello";return "Hello"; }}}}

Page Class

ASPNET_ISAPI.DLL

Assembly

HTTP 1.1 200 OK.....

InstanzierenKompilieren

form1.aspx form1_aspx.dll

HTTP Request

HTTP Response

Page 15: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Context Object Context Object verwendenverwenden

demodemo

Page 16: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Nutzloses Wissen – Nutzloses Wissen – Teil 4Teil 4Harvey Kennedy erfand die Schnürsenkel Harvey Kennedy erfand die Schnürsenkel

und wurde dadurch reich.und wurde dadurch reich.

Page 17: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Zentrale FehlerbehandlungZentrale Fehlerbehandlung

ProblemProblem Fehler, die irgendwo in der Web-Fehler, die irgendwo in der Web-

Applikation auftreten, sollen zentral Applikation auftreten, sollen zentral registriert bzw. behandelt werdenregistriert bzw. behandelt werden

Ein Eintrag in das Applikationslog soll Ein Eintrag in das Applikationslog soll erstellt werdenerstellt werden

AufgabenAufgaben1.1. Fehlerbehandlungscode in Global_asax Fehlerbehandlungscode in Global_asax

schreiben, Informationen extrahierenschreiben, Informationen extrahieren

2.2. System.Diagnostics-Klassen verwenden, System.Diagnostics-Klassen verwenden, um einen Logeintrag zu erstellenum einen Logeintrag zu erstellen

Page 18: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Zentrale FehlerbehandlungZentrale Fehlerbehandlung

Tips & TricksTips & Tricks Die abgefangene Exception ist immer Die abgefangene Exception ist immer

"HTTPUnhandledException", die "HTTPUnhandledException", die "wirkliche" Exception steht in "wirkliche" Exception steht in InnerExceptionInnerException

EventLog-ObjektEventLog-Objekt Alle Funktionen zum Umgang mit Alle Funktionen zum Umgang mit

EventlogsEventlogs

Page 19: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

ASP.NET LogfilesASP.NET LogfilesDemocode: CentralExceptions.slnDemocode: CentralExceptions.sln

demodemo

Page 20: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Nutzloses Wissen – Nutzloses Wissen – Teil 5Teil 5Der Mensch blinzelt normalerweise 25000 Der Mensch blinzelt normalerweise 25000

Mal pro Tag.Mal pro Tag.

Page 21: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Seitenvorlagen (Templates)Seitenvorlagen (Templates)

ProblemProblem Eine Seitenvorlage soll HTML enthalten, Eine Seitenvorlage soll HTML enthalten,

das auf jeder Seite vorkommtdas auf jeder Seite vorkommt

LösungLösung1.1. Seitenvorlage (Template) erstellenSeitenvorlage (Template) erstellen

2.2. Render-Methode überschreibenRender-Methode überschreiben

3.3. Content-Seiten von Master-Seite ableitenContent-Seiten von Master-Seite ableiten

Page 22: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Seitenvorlagen (Templates)Seitenvorlagen (Templates)

Tips & TricksTips & Tricks RenderRender-Methode überschreiben ist einfach -Methode überschreiben ist einfach

zu realisieren und sehr performant, aber zu realisieren und sehr performant, aber etwas schlecht zu warten (kein WYSWYG)etwas schlecht zu warten (kein WYSWYG)

Alternative: Header und Footer als Controls Alternative: Header und Footer als Controls erstellen, in erstellen, in OnPreRenderOnPreRender-Event einfügen -Event einfügen (WYSWYG über Visual Studio)(WYSWYG über Visual Studio)

Page 23: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

ASP.NET TemplatesASP.NET TemplatesDemocode: SimpleTemplates.slnDemocode: SimpleTemplates.sln

demodemo

Page 24: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Nutzloses Wissen – Nutzloses Wissen – Teil 6Teil 6Gold ist das 16. seltenste Element auf der Gold ist das 16. seltenste Element auf der

Welt.Welt.

Page 25: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Automatische URL-UmleitungAutomatische URL-Umleitung

ProblemProblem Seitenaufrufe sollen auf eine andere URL Seitenaufrufe sollen auf eine andere URL

umgeleitet werden, ohne daß der User dies umgeleitet werden, ohne daß der User dies bemerkt (z.B. bei "Umzug" der Site)bemerkt (z.B. bei "Umzug" der Site)

Vorbild: mod_rewrite von ApacheVorbild: mod_rewrite von Apache

LösungLösung1.1. BeginRequest-Event abfangenBeginRequest-Event abfangen

2.2. RewritePath-Funktion verwenden, um URL RewritePath-Funktion verwenden, um URL "umzuschreiben" "umzuschreiben"

Page 26: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Automatische URL-UmleitungAutomatische URL-Umleitung

Tips & TricksTips & Tricks Ursprüngliche URL kann für Ursprüngliche URL kann für

"Weiterverwendung" im "Weiterverwendung" im ContextContext-Objekt -Objekt gespeichert werden (gespeichert werden (ItemsItems-Aufzählung)-Aufzählung)

Page 27: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

URL-UmleitungURL-UmleitungDemocode: ReDirect.slnDemocode: ReDirect.sln

demodemo

Page 28: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Vielen Dank!Vielen Dank!

Fragen kostet nichts…Fragen kostet nichts…

Page 29: ASP.NET Tips & Tricks Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com  uwebaum@microsoft.com

Weitere InformationenWeitere Informationen

Nutzloses WissenNutzloses WissenHanswilhelm Haefs: Hanswilhelm Haefs: Handbuch des nutzlosen WissensHandbuch des nutzlosen Wissens, dtv Verlag, dtv Verlag

Forms AuthenticationForms Authenticationhttp://portals.devx.com/SummitDays/Article/6http://portals.devx.com/SummitDays/Article/6666/0/page/1666/0/page/1

URL RewritingURL Rewritinghttp://http://www.codeproject.com/aspnet/URLRewriter.aswww.codeproject.com/aspnet/URLRewriter.aspp

ASP.NET TemplatesASP.NET Templateshttp://www.wilsondotnet.comhttp://www.wilsondotnet.com

Download der BeispieleDownload der Beispielehttp://www.uwebaumann.dehttp://www.uwebaumann.de

ASP.NET allgemeinASP.NET allgemeinhttp://http://www.asp.netwww.asp.net