По соображениям производительности лучше использовать переписывание URL, а не связываться с HttpHandler. StaticFileHandler не так быстр, как IIS. Ваш собственный обработчик будет в 10 раз медленнее, чем StaticFileHandler, и, если вы не очень, действительно хороший инженер, он, вероятно, утечет (или неправильно изменит) память.
Вы можете вызвать context.RewritePath в событии BeginRequest (или PostAuthorizeEvent, если вы используете авторизацию URL) вашего HttpModule или HttpApplication, чтобы переписать выбранные типы файлов.