Im с использованием Imageresizer 4 в приложении MVC 5. У нас есть необходимость аутентификации запросов изображений, поэтому мы используем следующее событие:Аутентификация Imageresizer с Owin
protected void Application_Start() { ImageResizer.Configuration.Config.Current.Pipeline.AuthorizeAllImages = true; ImageResizer.Configuration.Config.Current.Pipeline.AuthorizeImage += AuthorizeImage; }
Метод AuthorizeImage выглядит следующим образом:
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); }
Проблема заключается в том, что мы используем Owin поэтому нам нужен OwinContext из HttpContext. При вызове метода GetOwinContext
мы получим следующее сообщение об ошибке:
Нет owin.Environment пункт был найден в контексте
Если я устанавливаю runAllManagedModulesForAllRequests
истина в web.config, все работает как надо.
Но я не хочу использовать runAllManagedModulesForAllRequests, так как это влияет на производительность.
Мой вопрос: могу ли я каким-то образом заставить промежуточное программное обеспечение Owin выполнять перед конкретным HttpModule?
Что-то вроде этого (псевдо код):
<modules runAllManagedModulesForAllRequests="false"> <add name="ImageResizingModule" type="ImageResizer.InterceptModule" modulesToRunBefore="Owin........" /> </modules>