2016-08-16 4 views
1

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>

ответ

0

Нет, вам нужно runAllManagedModulesForAllRequests=true, если вы не можете изменить то, как зарегистрирован модуль Owin, и сказать это для запуска для всех запросов ,

Смежные вопросы