ASP.NET-Handler läuft nicht im IIS

Thomas D

Erfahrenes Mitglied
Hallo!

Ich möchte über eine Silverlight-Anwendung auf einen ASP.NET-Handler zugreifen. Der Code sieht dabei wie folgt aus (nur die wesentlichen Teile daraus):

Code:
private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
{
    WebClient wc = new WebClient();
    wc.UploadStringAsync(new Uri ("http://localhost/test/test.aspx"), "string");
}

Der ASP.NET-Handler nennt sich test.aspx und beinhaltet derzeit noch keinen Code (nur das von Visual Studio vorgegebene Layout). Wenn ich das ganze nun auf dem IIS 5.1 publishe, dann wird der Handler allerdings nicht aufgerufen, was mir ein Blick in die IIS-Logfiles verdeutlicht:

Code:
14:19:01 127.0.0.1 GET /test/TestTestPage.html 200
14:19:01 127.0.0.1 GET /test/Silverlight.js 200
14:19:03 127.0.0.1 GET /test/ClientBin/Test.xap 200
14:19:11 127.0.0.1 POST /test/test.aspx 500

Wenn ich die Page im internen ASP.NET-Development Server ausführe, dann klappt freilich alles ohne Probleme. Vermutlich sind die Berechtigungen im IIS nicht passend eingestellt, sodass der POST-Aufruf unterdrückt wird, doch im Konfigurationsbereich sind für ".ashx" eh all die folgenden Verben angegeben: "GET,HEAD,POST,DEBUG".

Eventuell könnte ich das ganze aber dadurch beheben, indem ich noch einen zusätzlichen Berechtigungseintrag in Web.config mache. Leider kenne ich mich diesbezüglich noch nicht wirklich aus und wollte daher fragen, ob mir einer der mit ASP.NET besser bewandten hier im Forum weiterhelfen könnte, damit auch der IIS den im Development Server einwandfrei funktionierenden Code korrekt interpretiert.
 
Hi.

Interessant wäre die Fehlermeldung. Hast du Zugriff aufs EventLog am Server?

Ausserdem: EIn Handler hätte die Endung .ashx, aber dein Eintrag im Log lautet "test.aspx".

Wenn du keinen Zugriff aufs EventLog hast, stell in der web.config die customErrors auf "Off", und mach einen Zugriff auf das Form im Browser und schau mal was dabei steht.

Arbeitest du mit CodeBehind Code und einem Assembly im Bin Ordner?
Wenn ja: ist das Verzeichnis Test ein virtuelles Verzeichnis bzw. eigene Applikation? Wenn nein: Stell das mal um, oder lege das Bin Verzeichnis nach /bin anstatt /test/bin, und kopiere auch die web.config nach /.

lg, Alex
 
Interessant wäre die Fehlermeldung. Hast du Zugriff aufs EventLog am Server?

Ausserdem: EIn Handler hätte die Endung .ashx, aber dein Eintrag im Log lautet "test.aspx".

Stimmt, da habe ich mich beim Aufruf glatt verschrieben. Habe das ganze jetzt geändert, die Fehlermeldung bleibt aber im Wesentlichen dieselbe. Habe das ganze nun auch im IIS 6 unter Vista getestet und dabei folgende Ausgabe erhalten:

Code:
2009-02-19 15:30:10 ::1 POST /test/test.ashx - 80 - ::1 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.0;+Trident/4.0;+SLCC1;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.21022;+OfficeLiveConnector.1.3;+OfficeLivePatch.0.0;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30618) 500 0 0 15

Wofür steht denn hier die 15? Handelt es sich hierbei gar um eine nähere Beschreibung meines Fehlers?

Wenn du keinen Zugriff aufs EventLog hast, stell in der web.config die customErrors auf "Off", und mach einen Zugriff auf das Form im Browser und schau mal was dabei steht.

Wenn es sich bei dem Begriff "EventLog" um etwas anderes handelt, als ich bisher gepostet habe, bitte sagen. Ich sollte eigentlich auf alles Zugriff haben, da ich lokal arbeite.

Arbeitest du mit CodeBehind Code und einem Assembly im Bin Ordner?
Wenn ja: ist das Verzeichnis Test ein virtuelles Verzeichnis bzw. eigene Applikation? Wenn nein: Stell das mal um, oder lege das Bin Verzeichnis nach /bin anstatt /test/bin, und kopiere auch die web.config nach /.

Sorry, aber das verstehe ich jetzt leider nicht ganz: Habe die Silverlight-Applikation ganz normal unter Visual Studio ins IIS-Rootverzeichnis gepublisht. Dabei sollte eigentlich alles laufen, nur irgendwie scheint die ASP-Sache in der derzeitigen IIS-Konfiguration (keine Änderung nach Neuinstallation) dies zu blocken. Wie schon erwähnt, denke ich, dass die Web.config irgendwie modifiziert gehört. Nur wie ist mir bislang leider noch nicht ganz klar ...
 
Wenn es sich bei dem Begriff "EventLog" um etwas anderes handelt, als ich bisher gepostet habe, bitte sagen. Ich sollte eigentlich auf alles Zugriff haben, da ich lokal arbeite.

Ja, ich meine die Ereignisanzeige in der Computerverwaltung. Dort sollte der genaue Fehler vermerkt sein. Schau bitte mal nach. (Beim Punkt "Anwendung". Als Quelle sollte 'ASP.net ..' stehen)


Sorry, aber das verstehe ich jetzt leider nicht ganz: Habe die Silverlight-Applikation ganz normal unter Visual Studio ins IIS-Rootverzeichnis gepublisht. Dabei sollte eigentlich alles laufen, nur irgendwie scheint die ASP-Sache in der derzeitigen IIS-Konfiguration (keine Änderung nach Neuinstallation) dies zu blocken. Wie schon erwähnt, denke ich, dass die Web.config irgendwie modifiziert gehört. Nur wie ist mir bislang leider noch nicht ganz klar ...

Hab jetzt kein solches Projekt zur Hand, aber scheinbar liegt ja alles im Ordner "test", also auch die web.config.
Geh mal zur Verwaltung vom IIS, schau nach ob der Ordner "Test" ein Virtuelles Verzeichnis ist, wenn nicht mach ein neues mit dem selben Namen und auf den selben Pfad.
 
Nach ewigem Debuggen hat sich herausgestellt, dass einerseits wie vermutet ein paar Einträge in der Web.config nicht korrekt waren, andererseits ich das Projekt als Anwendung hinzufügen musste. Damit geht es im IIS 6 unter Vista. In XP kriege ich es zwar weiterhin nicht zum Laufen, da es dort nur die Möglichkeit gibt, das Projekt als Virtuelles Verzeichnis hinzufügen, aber immerhin klappt es unter Vista. Danke auf jeden Fall für deine Hilfestellung - die hat mir sehr geholfen ;-)!
 
Worin besteht eigentlich der konkrete Unterschied, ob ich ein Verzeichnis als Anwendung oder als Virtuelles Verzeichnis hinzufüge? Kann es sein, dass diese beiden Methoden sich dahingehend unterscheiden, dass bei der Anwendung auch noch die Web.config-Datei miteinbezogen wird und beim Virtuellen Verzeichnis nicht?

Versuche nämlich das ganze Projekt, das im IIS 7 unter Vista läuft, nun auch auf den IIS 6 unter Windows 2003 Server zum Laufen zu bekommen, doch scheitere weiterhin daran, dass es hier keine Möglichkeit gibt, meine Silverlight-Applikation als Anwendung hinzuzufügen. Wenn ich wüsste, worin der zentrale Unterschied zwischen diesen beiden Hinzufügetechniken besteht, dann sollte es mir eigentlich auch am IIS 6 gelingen. Jemand eine Idee? ...
 

Neue Beiträge

Zurück