Frage

Ich schreibe eine Komponente, die ich in beiden MVC und WebForms Web-Anwendungen zu verwenden, um die Lage sein möchte, aber ich bin nicht sicher, wie die Unterschiede zwischen zu handhaben, wie Httpcontext behandelt wird.

Meine Komponente beinhaltet eine benutzerdefinierten IHttpHandler (für WebForms) oder eine benutzerdefinierte Action (für MVC).

Also habe ich ein paar Fragen bekommen:

  • Gibt es eine Möglichkeit, eine IHttpHandler mit MVC zu verwenden, ohne das Modell zu brechen?
  • Ist es akzeptabel, HttpContext.Current zu verwenden, bei dem Versuch, den Code zu schreiben, der für beide funktionieren? Es scheint ein wenig Brute-Force-isch mir (nicht sicher, warum), aber die Alternative wäre, zu schreiben und eine ziemlich ausführliche Schnittstelle implementiert die Abstraktion zwischen Httpcontext und Controller zu behandeln.
  • Bin ich über diese völlig falsch gehen?
War es hilfreich?

Lösung

  1. Ja, Sie können nur routes.IgnoreRoute("MyHandler.ashx") verwenden. Es wird wieder auf die ursprüngliche ASP.NET Handhabung fallen, ohne das Modell zu brechen.
  2. Nein, ich denke, es ist vollkommen in Ordnung ist HttpContext.Current zu verwenden. Ich denke, wenn Sie Ihre eigenen Handler schreiben, MVC ist nicht sehr anwendbar. Sie schreiben Ihren Code für ASP.NET , nicht ASP.NET MVC oder ASP.NET Web Forms. Es ist einfach, es bei beiden Modellen arbeiten zu machen (funktioniert OOTB mit Web-Formulare, mit IgnoreRoute in MVC). Sie könnten machen, was komplizierter, als sie sein sollte! Denken Sie daran, der einzige Zweck des Entwurfsmusters (wie MVC) Einfachheit. Machen Sie nicht Dinge kompliziert!
  3. goto 2; Schreiben Sie einfach einen einfachen Handler!
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top