Ich verwende Imageresizer 4 in einer MVC 5-Anwendung. Wir haben die Notwendigkeit, die Bildanfragen zu authentifizieren, so dass wir das folgende Ereignis verwenden:Imagebesitzer-Authentifizierung mit Owin
protected void Application_Start() { ImageResizer.Configuration.Config.Current.Pipeline.AuthorizeAllImages = true; ImageResizer.Configuration.Config.Current.Pipeline.AuthorizeImage += AuthorizeImage; }
Die AuthorizeImage Methode sieht wie folgt aus:
private static void AuthorizeImage(IHttpModule sender, HttpContext context, IUrlAuthorizationEventArgs e) { //This line throws an exception if runAllManagedModulesForAllRequests is set to false var owinContext = context.GetOwinContext(); Authorize(context, owinContext); }
Das Problem ist, dass wir Owin verwenden Also brauchen wir den OwinContext vom HttpContext. Wenn die GetOwinContext
Methode rufen wir die folgende Fehlermeldung erhalten:
Kein owin.Environment Element im Kontext
Wenn ich die runAllManagedModulesForAllRequests
auf true in web.config gesetzt gefunden wurde, funktioniert alles, wie es sollte.
Aber ich möchte runAllManagedModulesForAllRequests nicht verwenden, da es eine Auswirkung auf die Leistung hat.
Meine Frage ist: Kann ich irgendwie zwingen, die OWIN-Middleware vor einem bestimmten HttpModule auszuführen?
So etwas wie dieses (Pseudo-Code):
<modules runAllManagedModulesForAllRequests="false"> <add name="ImageResizingModule" type="ImageResizer.InterceptModule" modulesToRunBefore="Owin........" /> </modules>