2015-07-03 2 views
0

У меня есть класс IRouteHander, который я использую для изменения размеров изображений на лету и добавления к ним заголовков истечения срока действия. Недавно я перешел на MVC5 и теперь обновляю свой код. Я пытался зарегистрировать один и тот же маршрут для этого класса в RouteConfig.csIRouteHandler не маршрутизирует через RouteConfig

routes.Add(new Route("Image/{w}/{h}/{src}", new ThumbImageRouteHandler())); 

, но этот маршрут больше не работает, как это было на MVC3 и дает ошибку 404 в MVC5. Здесь что-то не хватает? этот маршрут ведет к

public class ThumbImageRouteHandler : IRouteHandler 
{ 
     public IHttpHandler GetHttpHandler(RequestContext requestContext) 
      { 
       HttpHanler httpHandler = new HttpHanler(); 
       return httpHandler; 
      } 
      public class HttpHanler : IHttpHandler 
      { 
       public bool IsReusable 
       { 
        get 
        { 
         return false; 
        } 
       } 
       public void ProcessRequest(HttpContext context) 
       { 
       //Do something 
       } 
       } 
      } 
} 

Пожалуйста, помогите мне устранить эту проблему. Спасибо

ответ

1

После исследования выяснилось, что мне нужно добавить строку в webconfig, чтобы она работала, вот как это сделать.

<system.webServer> 
    <handlers> 
     <add name="ApiURIs-ISAPI-Integrated-4.0-Image" path="/Image/*" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    </system.webServer> 

Поскольку IRouteHandler генерирует повторно размера изображения с динамическим путем, и думает, что IIS это реальный путь к каталогу, из-за точкой (.) В ссылке, и думает, что это расширение, которое на самом деле не. Поэтому мы должны добавить обработчик в Web.Config, чтобы он работал.

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