Я продолжал работать над этой проблемой прошлой ночью, и, к своему удивлению, я был ближе к решению, которое я думал.Для тех, кто может бороться с этим в будущем, вот как я реализовал MVC2 Routing to Generic Handler.
Сначала я создал класс, который унаследовал IRouteHandler
public class ImageHandlerRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
var handler = new ImageHandler();
handler.ProcessRequest(requestContext);
return handler;
}
}
Затем я реализовал универсальныйобработчик создает дружественный к MVC ProcessRequest.
public void ProcessRequest(RequestContext requestContext)
{
var response = requestContext.HttpContext.Response;
var request = requestContext.HttpContext.Request;
int width = 100;
if(requestContext.RouteData.Values["width"] != null)
{
width = int.Parse(requestContext.RouteData.Values["width"].ToString());
}
...
response.ContentType = "image/png";
response.BinaryWrite(buffer);
response.Flush();
}
Затем добавляется маршрут к global.asax
RouteTable.Routes.Add(
new Route(
"images/{width}/{height}/imagehandler.png",
new ImageShadowRouteHandler()
)
);
, после чего вы можете вызвать обработчик, используя
<img src="/images/100/140/imagehandler.png" />
Я использовал универсальный обработчик для генерации динамических водяных знаков, когда это необходимо.Надеюсь, это поможет другим.
Если у вас есть какие-либо вопросы, дайте мне знать, и я постараюсь помочь вам, где это возможно.