ASP.NET-Routing - Do Benutzerdefinierte Routen VOLLSTÄNDIG SKIP Alles in der Global.asax?

StackOverflow https://stackoverflow.com/questions/400236

  •  03-07-2019
  •  | 
  •  

Frage

Ich habe eine einfache ASP.NET 3.5 SP1 Web Forms app ... Ich habe die System.Web.Routing DLL hinzugefügt, und ich habe einen einfachen Weg gemacht, die eine Standard ASP.NET Seite als „IHttpHandler zurück “.

Alles ist gut ... außer dass HttpContext.Current.User ist null ???

Also habe ich ein wenig mehr Graben (Ich habe Stützpunkte in allen Ereignissen in der Datei Global.asax). Normalerweise erhalten diese Stützpunkte getroffen (wenn ich zu einem Standard „aspx“ Seite navigieren):

  • Application_BeginRequest
  • Application_AuthenticateRequest
  • Application_EndRequest

Aber, wenn ASP.NET-Routing mit ... keines dieser Ereignisse feuern. Bin ich etwas fehlt?

War es hilfreich?

Lösung

Angenommen, Sie IIS6 verwenden, die Alternative ist eine „Wild Card“ Erweiterungshandler zu definieren. Addiert man diese einfachen „fangen alle“ Mapping auf IIS6 ermöglicht es Ihre erweiterungs Anforderungen zu verarbeiten. Standardmäßig ist die .NET-Installer Karten „.aspx“ der aspnet_isapi.dll-, deshalb die Erweiterung .aspx funktioniert. Zur Karte Anfragen ohne Erweiterung des APS.NET Motor, müssen Sie IIS sagen, zu betrachten jede Anfrage .

Hier ist ein kurzer Artikel, der den Prozess erklärt:

http: // haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

Hoffnung, dass der „lame“ Faktor Ihrer URLs hilft und reduziert. :)

-Todd

Andere Tipps

Gefunden die freakish und bizzare (und dumm) Antwort:)

Wenn Sie nicht hinzufügen „aspx“ bis zum Ende der Route, nichts Brände in der Global.asax, das heißt, Sie erhalten keine Beginrequest, AuthenticateRequest, Endrequest, etc ... Auch Sie don‘ t erhalten Session oder sonst etwas.

Also, „reparieren“ das war für mich gerade von diesem meine Route ändern:

RouteTable.Routes.Add("Blah", new Route("Blah/{reportName}", new MyHandler());

folgt aus:

RouteTable.Routes.Add("Blah", new Route("Blah/{reportName}.aspx", new MyHandler());

Wie vollständig lahm :) ... aber es ist ein fixe none-the-less!

Wenn Sie sagen,

bis zum Ende der Route „Wenn Sie nicht hinzufügen“ aspx“, nichts Brände in der Global.asax, das heißt, Sie erhalten keine Beginrequest, AuthenticateRequest, Endrequest, etc ... Auch Sie don ‚t Session oder etwas bekommen."

Will IIS log solche Anfragen in den Log-Dateien oder sie sind nur anonym? was über Application-Variablen und Viewstate?

sorry ich habe es noch nicht getestet, aber nur zu fragen, ob Sie vielleicht schon wissen?

i Anwendungsvariable und Viewstate überprüft haben, sind diese beiden offensichtlich arbeiten .. nicht sicher über Server-Logs: S

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top