ASP.NET
ASP.NET ist die .NET-Version des früheren ASP-Ansatzes. Dabei dient in der Regel ein Browser als "Client" während ein Webserver die Arbeit verrichtet. ASP ist ähnlich wie PHP eine Skriptbasierte dynamische Generierung von Webseiten. Auf dem Webserver liegt dazu keine HTML-Datei sondern die Endung lautet meist auf ASP, ASPX, PHP, so dass der Webserver diese Datei nicht 1:1 ausliefert, sondern erst durch einen Interpreter laufen lässt, welcher den darin enthaltenen Code ausführt und die Seite "zusammensetzt".
Mit ASP.NET ist das ganze nun noch einfacher geworden, dass die ASPX-Seite quasi nur noch für die Darstellung zuständig ist und die Programmlogik als "Code behind" in eine eigene Datei ausgelagert wurde. Auch die Entwicklung wurde durch eine erweiterte EntwicklungsUmgebung (IDE) stark vereinfacht.
IDE für ASP-NET Programmierung
Bitte fangen Sie nun nicht an, mit Notepad zu programmieren, denn Microsoft verschenkt eine komplette Entwicklungsumgebung. Laden Sie sich einfach das folgende Paket herunter.
Visual Studio Web Developer Express
http://msdn.microsoft.com/vstudio/express/vwd/
https://visualstudio.microsoft.com/
Visual Studio Web Developer Express SP1
Ressourcen zum Lernen
https://dotnet.microsoft.com/learn/aspnet
ASP.NET Home > Learn ASP.NET > Learning > New to Development
http://msdn2.microsoft.com/en-us/asp.net/aa336576.aspx
WebCast: Coding Basics
http://www.microsoft.com/events/series/msdncodingbasics.mspx
Jetzt geht es rund: Visual Studio Express für Kids
http://msdn.microsoft.com/vstudio/express/beginner/kids/default.aspx
Creating your first Website using HTML
http://msdn.microsoft.com/vstudio/express/beginner/kids/website
Visual Studio und andere Software für Schüler
kostenfrei
https://www.dreamspark.com/default.aspx
Das Programm nutzt das .NET Framework 2.0 auf dem Server und erlaubt ihnen einfach ihre Webanwendungen zu schreiben Es gibt auch eine "kleine" MSDN für diese Umgebung, entsprechende Lernvideos und wer mag, kann das alles auch auf Deutsch installieren.
Als Administrator oder Consultant müssen Sie vielleicht
nicht selbst entwickeln, aber Sie sollten wissen, wie Entwickler heute
Arbeiten können. Sie sollten sich also zumindest die ersten
Einführungsvideos anschauen.
Wenn sie erst einmal, wie einfach etwas möglich ist, dann werden Sie schon
selbst Ideen haben, wie Lösungen entwickelt werden können und wo es sich
lohnt, einen Entwickler ein paar Tage dran zu setzen.
Ich erspare mir hier nun ein paar Screencaptures von Visual Studio Express und umfangreiche Erläuterungen. Schauen Sie sich einfach die Videos auf der Microsoft Seite an.
Aus meiner Sicht ist es an der Zeit nun auch von VBScript
letztlich Abschied zu nehmen. für die "Adhoc-Administration sehe ich die
Zukunft in der
PowerShell und für umfangreichere Skripte sind Visual Basic.NET, C# oder webbasierte
ASP.NET-Programme die Zukunft.
Auch ich tue mir schwer, meine lieb gewonnenen VBScripts auslaufen zu
lassen. Aber ich sehen heute schon, dass jeder Server zukünftig direkt das
.NET Framework 2.0 und Visual Studio Express installiert haben wird.
In absehbarer Zeit wird es auch hierzu die ein oder andere "Lösung" im
Bereich
Public Tools geben.
ASP.NET Karteikarte im IIS
Nach der Installation der .NET Frameworks 2.0 sollte auch im IIS eine neue Karteikarte zur Konfiguration zu finden sein. Letztlich ist es eine kleine grafische Oberfläche zur Pflege der Einstellungen in der Datei "web.config".
Allerdings passiert es wohl auch genauso häufig, dass diese Karteikarte NICHT da ist. Oft liegt das an einer früheren Version des .NET Frameworks, die nicht sauber deinstalliert wurde.
64bit und 32bit
Immer mehr Server werden schon mit Windows x64 installiert. Damit ist natürlich auch der IIS "64bittig", was aber bedeutet, dass viele Web-Programme nicht mehr laufen. Denn das ASP.NET-Framework kann nicht gleichzeitig 64biot und 32bit-Versionen bereitstellen. Auch andere 32bit Erweiterungen (Perl, PHP etc.) haben mit dem IIS im 64bit Mode ein Problem. Sie ahnen sicher schon, was nun kommt: Sie können den IIS in die ein oder andere Betriebsart umzustellen. Der Befehl dazu lautet:
cscript %SYSTEMDRIVE%\inetpub\Administratorencripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64
0
rem ODER
cscript %SYSTEMDRIVE%\inetpub\Administratorencripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64
1
Danach sollten Sie sicherheitshalber auch ASP-NET neu registrieren:
C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -i
Das ist aber immer eine globale Einstellung und daher ist es nach meinem Kenntnisstand nicht möglich, eben 32bit und 64bit Web-Anwendungen auf dem gleichen Server zu mischen. So gibt es Programme, die auf einem 64bit Server zwingend auch den IIS im 64bit Mode betreiben müssen (z.B. Exchange 2007 oder DPM 2007), was diverse Dritthersteller eben aussperrt, die vielleicht die Kompatibilität des IIS auf 32bit umstelle lassen.
Beim Einsatz von x64 werden Sie auch feststellen, dass Sie keine "ASP.NET" Karteikarte mehr in der IIS-Verwaltung haben. Auch Microsoft hat nicht überall alles auf x64 umgestellt. Mein letzter Stand (Feb 07) ist, dass hier die Karteikarte per Default nicht erreichbar ist. Viele Tipps im Internet verweisen darauf, dass man in folgenden Registrierungsschlüsseln alle Einträge entfernen sollte, außer die Verweise auf 2.0.0
HKEY_CLASSES_ROOT\CLSID\{7D23CCC6-A390-406E-AB67-2F8B7558F6F6}\InprocServer32\
HKEY_CLASSES_ROOT\CLSID\{FD5CD8B1-6FE0-44F3-BBFB-65E3655B096E}\InprocServer32\
HKEY_CLASSES_ROOT\CLSID\{FEDB2179-2335-48F0-AA28-5CDA35A2B36D}\InprocServer32\
Auch finden sich Ratschläge folgenden Befehl auszuführen.
c:\windows\microsoft.net\framework\v2.0.50727\aspnet_regiis -i
Allerdings habe ich mindestens einen Server, auf dem auch das nicht geholfen hat. Also sollte man immer noch wissen, wie man eine XML-Datei von Hand editiert.
- 919283 The "ASP.NET" tab of IIS Manager does not appear when you retrieve the properties für a virtual directory in IIS Manager
-
ASP.NET Tab missing
http://www.sharepointblogs.com/mattg/archive/2006/02/28/5366.aspx -
ASP.NET Version Switcher
http://www.denisbauer.com/NETTools/ASPNETVersionSwitcher.aspx -
WMware virtual Web stört ASP.NET Karteikarte
http://blog.angrypets.com/2006/09/solved_missing_.html
http://www.vmware.com/community/thread.jspa?messageID=577615
ASP.NET und Anmeldung
Ein besonders verzwicktes Kapitel ist natürlich die Frage der Berechtigungsdaten. Hier gilt es gleich mehrere Aspekte sauber von einander zu trennen. Fakt ist, dass der Code auf dem Webserver immer mit einem Berechtigungskonto ausgeführt wird. Die Frage ist nur, welche Rechte der Code nutzen darf und kann. Schauen wir uns die verschiedenen Einstellungen einmal an
- ASP-NET Appplicationpool
Der IIS verwendet Applicationpools, welchen die entsprechende Anwendung zugewiesen werden muss. In diesem Application Pool kann eine Identität gepflegt werden, mit welcher die Anwendungen in diesem Pool laufen.
- Rechte des angemeldeten Benutzer
Wird aber im virtuellen Verzeichnis eine Anmeldung des Benutzers erfordert, d.h. der Zugriff erfolgt nicht "anonym", dann kann das Skript mit den Rechten des angemeldeten Benutzers ausgeführt werden.
Hier muss man aber wissen, dass ein Zugriff des Codes auf andere Server dann nur dann möglich ist, wenn der IIS das "Kennwort" oder ein Kerberos-Ticket für den Benutzer hat. Wird hingegen die integrierte Windows Anmeldung genutzt (NTLM) dann ist kein Zugriff auf andere Systeme weiter möglich, weil der IIS ja kein Kennwort des Benutzers hat, sondern nur weiß, dass der Benutzer gültig ist. Diesem Wissen vertrauen aber die anderen Systeme natürlich nicht. - Rechte im Code
Natürlich kann ich als Entwickler auch vorgeben, dass ich im Code selbst Anmeldedaten hinterlegen.
Das kann statisch im Code selbst oder über eine Konfigurationsdatei (z.B. der web.config) erfolgen. Der Weg über die web.config ist hier vorzuziehen, da der Code später ja nicht mehr so einfach zu ändern ist. Das könnte dann wie folgt aussehen:
Einstellung in der web.config <configuration> <appSettings> <add key="Parameter1" value="Wert1"/> </appSettings> </configuration> Abfrage aus dem Code: Wert = ConfigurationManager.AppSettings("Parameter1")
Wenn man jedoch nicht die Zugangsdaten des Anwender selbst über den IIS ermitteln lässt, dann kann man natürlich immer noch die Zugangsdaten selbst über ein Formular (Quasi "Form Based") abfragen lassen und in seiner Anwendung speichern und weiter verwenden. Hier muss man aber auch wieder aufpassen, dass man die Zugangsdaten im Code "sicher" speichert, so dass niemand anderes diese vom Benutzer vertrauensvoll übergebenen Daten dort abzweigt.
- How To: use Impersonation and Delegation in ASP.NET 2.0
http://msdn2.microsoft.com/en-us/library/ms998351.aspx - 910443 understanding the Forms Authentication Ticket and Cookie
- 910439 Troubleshoot Forms Authentication
- Vortrag von MVP Henning Krause zu sicheren Speicherung von Kenworten http://www.infinitec.de/articles/misc/Usergroupvortrag_januar2006.aspx
- How To: use Forms Authentication with Active Directory in ASP.NET
2.0
http://msdn2.microsoft.com/en-us/library/ms998360.aspx - Ablegen von Konfigurationen in der wb.config
http://www.devtrain.de/artikel_929.aspx - Erstellen von web.config-Dateien
http://msdn2.microsoft.com/de-de/library/k8x4ket8(VS.80).aspx - Gewusst wie: Konfiguration von ASP.NET Anwendungen
http://msdn2.microsoft.com/de-de/library/834fa2k0(VS.80).aspx - web.config - configuration-Element und unterelemente
http://msdn2.microsoft.com/de-de/library/ms228147%28VS.80%29.aspx
Tracing
Oft steht man als Admin aber doch vor der Frage, was die ASP:NET Seite im Hintergrund macht. Wenn der Entwickler dies nicht verhindert hat, dann kann man über das ASP-Tracing weitere Details erfahren. Nehmen Sie dazu einfach das virtuelle Verzeichnis und hängen sie ein "TRACE.AXD" hinten dran. Bei aktivierten Trace sehen sie dann die letzten 10 Anfragen und können weitere Details der Anfrage anzeigen lassen. (Hier am Beispiel des exchange@PAM Webservice)
Oftmals ist der Zugriff aber auf "localhost" begrenzt, d.h. Sie müssen den Aufruf mit dem lokalen IE ausführen oder die Konfiguration ändern.
ASP.NET in einer Datei -Samples
Analog zu ASP kann der Code aber auch direkt in der HTML-Datei hinterlegt werden. Hier ein sehr einfaches Beispiel, welches sie mit Notepad einfach als ASPX-Datei auf dem IIS ablegen können und beim Aufruf durch den Client einfach alle Servervariablen ausgibt:
<%@ Page Language="c#" AutoEventWireup="true" %> <html> <head><title>ServerVariablen</title></head> <body> <p>ServerTime: <%= System.DateTime.Now.ToLongDateString() %></p> <table> <% foreach (string item in Request.ServerVariables) { string value = Request.ServerVariables[item]; if (value == "") { value="nicht definiert"; } %> <tr><td><%= item %></td><td><%= value %></td></tr> <% } %> </table> </body> </html>
Ich setze dieses einfache Script oft zur ersten Fehlersuche ein, indem ich ein "/test"-Verzeichnis anlegen und das Skript als "default.aspx" dort abspeichere. Von einem Client rufe ich per Browser die Seite dann ab und sehe sehr einfach, ob z.B.: die Authentifizierung funktioniert, welche Client-IP der Webserver sieht und welche Werte er von meinem Client ausliest. Und letztlich ist es ein Basistest, ob ASP.NET überhaupt funktioniert.
Weitere Links
- FrontPage Struktur
- ASP.NET Sitemap
- ExpressionsWeb / Sharepoint Designer
-
ASP2ASP.NET Tools
http://www.asp.net/downloads/archived/migration-assistants/asp-to-aspnet -
Download the ASP to ASP.NET Migration Assistant
http://download.microsoft.com/download/0/7/8/0780e532-8d77-4834-9a8e-fd428fbdde63/Setup.msi -
Download the ASP to ASP.NET 1.x Migration Guide
http://msdn.microsoft.com/asp.net/migration/aspmig/aspmigasst/default.aspx -
Download the ASP to ASP.NET Migration Assistant Training
http://download.microsoft.com/download/b/f/6/bf6ac2d3-1359-49f4-ad8a-271edd223275/ASP%20to%20ASP.NET%20Migration%20Asssitant%20Training.msi -
Download the Migration Assistant best practices guide
http://msdn.microsoft.com/asp.net/migration/aspmig/aspmigasst/default.aspx -
http://www.aspnetzone.de/
Deutsche ASP-NET Communizy Zone -
Coding4Fun
http://msdn.microsoft.com/coding4fun - 834010 A deadlock occurs when a program that uses WMI calls the LoadLibrary() or the FreeLibrary() function in Windows 2000
-
ASP.Net nutzt PowerShell für Anlegen einer Mailbox
http://blogs.msdn.com/akashb/archive/2009/01/30/howto-using-PowerShell-in-asp-net-net-framework-2-0.aspx -
Umfangreiche kostenfreie Icon-Sammlung
http://www.famfamfam.com/lab/icons/