Использование маршрутизации ASP.NET для обслуживания статических файлов.

Можно ли использовать маршрутизацию ASP.Net (не MVC) для обслуживания статических файлов?

Скажи, что я хочу направить

http://domain.tld/static/picture.jpg

в

http://domain.tld/a/b/c/picture.jpg

и я хочу сделать это динамически в том смысле, что переписанный URL-адрес вычисляется на лету. Я не могу настроить статический маршрут раз и навсегда.

В любом случае, я могу создать маршрут следующим образом:

routes.Add(
  "StaticRoute", new Route("static/{file}", new FileRouteHandler())
);

вFileRouteHandler.ProcessRequest метод, который я могу переписать путь из/static/picture.jpg в/a/b/c/picture.jpg, Затем я хочу создать обработчик для статических файлов. ASP.NET используетStaticFileHandler для этого. К сожалению, этот класс является внутренним. Я попытался создать обработчик с помощью отражения, и он на самом деле работает:

Assembly assembly = Assembly.GetAssembly(typeof(IHttpHandler));
Type staticFileHandlerType = assembly.GetType("System.Web.StaticFileHandler");
ConstructorInfo constructorInfo = staticFileHandlerType.GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null);
return (IHttpHandler) constructorInfo.Invoke(null);

Но использование внутренних типов не кажется правильным решением. Другой вариант - реализовать свой собственныйStaticFileHandler, но делать это правильно (поддерживая такие вещи HTTP, как диапазоны и тэги) нетривиально.

Как мне подходить к маршрутизации статических файлов в ASP.NET?

Ответы на вопрос(5)

Ваш ответ на вопрос