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/
Visual Studio Web Developer Express SP1

Ressourcen zum Lernen
http://msdn.microsoft.com/vstudio/express/vwd/easytolearn/
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".

ASP-Karteikarte ASP-Konfig

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.

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.
    ASP.NET-Poolsecurity
  • 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.
    IIS Authenticatino
    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.
    Zugangsdaten im Code
    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.

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>

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 ClientIP der Webserver sieht und welche Werte er von meinem Client ausliest. Und letztlich ist es ein Basistest, ob ASP.NET überhaupt funktioniert.

Weitere Links