Verwenden des ASP.NET-Routings zum Bereitstellen statischer Dateien

Kann ASP.Net-Routing (nicht MVC) zum Bereitstellen statischer Dateien verwendet werden?

Angenommen, ich möchte routen

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

zu

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

und ich möchte es dynamisch in dem Sinne tun, dass die umgeschriebene URL im laufenden Betrieb berechnet wird. Ich kann eine statische Route nicht ein für alle Mal einrichten.

Wie auch immer, ich kann eine Route wie diese erstellen:

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

In demFileRouteHandler.ProcessRequest Methode kann ich den Pfad von umschreiben/static/picture.jpg zu/a/b/c/picture.jpg. Ich möchte dann einen Handler für statische Dateien erstellen. ASP.NET verwendet dieStaticFileHandler für diesen Zweck. Leider ist diese Klasse intern. Ich habe versucht, den Handler mit Reflection zu erstellen, und es funktioniert tatsächlich:

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

Die Verwendung interner Typen scheint jedoch nicht die richtige Lösung zu sein. Eine andere Möglichkeit besteht darin, meine eigene zu implementierenStaticFileHandlerAber es ist nicht trivial, dies richtig zu tun (Unterstützung von HTTP-Inhalten wie Ranges und Etags).

Wie gehe ich beim Routing statischer Dateien in ASP.NET vor?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage