Il routing ASP.Net (non MVC) può essere utilizzato per servire file statici?Utilizzo del routing ASP.NET per servire file statici
dire che voglio percorso
http://domain.tld/static/picture.jpg
a
http://domain.tld/a/b/c/picture.jpg
e voglio farlo in modo dinamico, nel senso che l'URL riscritto viene calcolata al volo. Non riesco a impostare una rotta statica una volta per tutte.
Comunque, posso creare un percorso come questo:
routes.Add(
"StaticRoute", new Route("static/{file}", new FileRouteHandler())
);
Nel metodo FileRouteHandler.ProcessRequest
posso riscrivere il percorso da /static/picture.jpg
a /a/b/c/picture.jpg
. Quindi voglio creare un gestore per i file statici. ASP.NET utilizza lo StaticFileHandler
per questo scopo. Sfortunatamente, questa classe è interna. Ho cercato di creare il gestore utilizzando la riflessione e funziona in realtà:
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);
Ma utilizzando i tipi di interni non sembra essere la soluzione adeguata. Un'altra opzione è quella di implementare il mio StaticFileHandler
, ma farlo in modo appropriato (supportando elementi HTTP come intervalli ed etags) non è banale.
Come devo affrontare l'instradamento dei file statici in ASP.NET?
Per me funziona, ma non riesco ad analizzare un file JS in una cartella View di un'area, per risolvere il problema, io uso invece un'altra cartella nella cartella base dell'area come /Areas/MyArea/ClientScripts/foo.js – eka808
In qualche modo mi sembra di perdere un pezzo nel puzzle ... in che modo ignorare i percorsi ai file statici aiuta con il routing da '/ static' a'/a/b/c' (richiesto dall'OP)? Potresti per favore gettare un po 'di luce sulla tua risposta, mi piacerebbe davvero capire questa soluzione. – Oliver
Concordare con Oliver che questo NON risponda all'OP e non dovrebbe essere accettato come soluzione. – dhochee