Używanie routingu ASP.NET do obsługi plików statycznych

Czy routing ASP.Net (nie MVC) może być używany do obsługi plików statycznych?

Powiedz, że chcę jechać

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

do

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

i chcę to robić dynamicznie w tym sensie, że przepisany URL jest obliczany w locie. Nie mogę raz na zawsze ustawić trasy statycznej.

W każdym razie mogę utworzyć trasę taką jak ta:

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

wFileRouteHandler.ProcessRequest metoda mogę przepisać ścieżkę z/static/picture.jpg do/a/b/c/picture.jpg. Następnie chcę utworzyć program obsługi plików statycznych. ASP.NET używaStaticFileHandler w tym celu. Niestety ta klasa jest wewnętrzna. Próbowałem utworzyć procedurę obsługi za pomocą refleksji i faktycznie działa:

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);

Ale użycie typów wewnętrznych nie wydaje się właściwym rozwiązaniem. Inną opcją jest wdrożenie własnegoStaticFileHandler, ale robienie tego właściwie (obsługa materiałów HTTP, takich jak zakresy i etagi) jest nietrywialne.

Jak podejść do routingu plików statycznych w ASP.NET?

questionAnswers(5)

yourAnswerToTheQuestion