2

У меня есть общий обработчик (.ashx) в веб-приложении asp.net mvc3. Я использую его для изменения размера и кэширования изображений. но мой Url не чист (http://www.example.com/Thumb.ashx?img=someimage.jpg) Я хочу сделать его чистым, как http://www.example.com/Thumb/someimage.jpg как я могу это сделать?Общий обработчик MVC3 (.ashx) для изменения размера изображений (нужен чистый URL)

Могу ли я сканировать в global.asax, это да, а как? или я должен использовать переписывание URL IIS 7?

Я признателен за любую помощь, спасибо

+0

ребята, пожалуйста, предложите мне что-то .. –

ответ

3

После нескольких часов исследования я сделал это с помощью класса (RouteHandler.cs) обработчика HTTP, но не с .ashx, потому что .ashx не может быть маршрут с использованием global.asax

public class RouteHandler : 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) 
     { 
      var routeValues = context.Request.RequestContext.RouteData.Values; 
      string file = context.Request.RequestContext.RouteData.Values["img"].ToString(); 

      // anything you can do here. 

      context.Response.ContentType = "image/jpeg"; 
      context.Response.BinaryWrite("~/cat.jpg"); 
      context.Response.End(); 

     } 
    } 
} 

затем в global.asax просто зарегистрировать маршрут,

routes.Add(new Route("Thumb/{img}", new RouteHandler())); 

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

  • Нет связанных вопросов^_^