2013-03-12 9 views
7

Quando si dispone di un tag di immagine nell'applicazione in questo modo:Quale componente di codice in un'applicazione ASP.NET (WebForms o MVC) serve risorse del sito Web come le immagini?

<img src = @Url.Content("~/foo/bar.jpg") /> 

o in questo modo:

<asp:image src = "~/foo/bar.jpg" /> 

o in questo modo:

<input type = "image" ...> 

e se questo sembra essere un L'applicazione ASP.NET (Web Forms o MVC è irrilevante per la domanda, presumo, poiché il codice che serve le immagini deve essere lo stesso), quale componente specifico serve le richieste di immagini?

È il server Web (server Web interno di IIS o Visual Studio) o è un HttpHandler di ASP.NET che Microsoft ha scritto.

Ricordo che c'era un gestore per servire file di risorse in ASP.NET 2.0. È quello che serve anche le immagini? Come si chiama?

Perché sto chiedendo a questa domanda/Quello che sto cercando di fare

Ho un'applicazione ASP.NET MVC e voglio scrivere il mio personalizzato HttpHandler o un controller per servire le attività statiche come immagini in modo che vengono memorizzati nella cache.

Quello che sto progettando di fare qualcosa di quasi esattamente simile a http://blog.hompus.nl/2011/03/11/make-your-browser-cache-the-output-of-an-httphandler/ e http://archive.msdn.microsoft.com/ResourceCache

voglio fare in modo che se c'è una già scritto da Microsoft, potrei aver bisogno di prendere alcune precauzioni durante l'invio di nuovo intestazioni HTTP in la risposta è tale che le intestazioni dei set httpHandler di Microsoft non sono in contraddizione con quelle che ho impostato.

risposta

1

Ok, mi sembra che ASP.NET non si preoccupi molto delle risorse statiche e quindi non registra un filtro ISAPI con IIS per nessuna di quelle risorse .

Ciò significa che, come sviluppatore che desidera scrivere un gestore specifico per le risorse statiche, sei praticamente libero di fare ciò che vuoi.

2

Per impostazione predefinita, tutte le richieste di pagine ASPX (comprese le risorse statiche in essa, come le immagini) sono serviti da quella predefinita HttpHandler, che è un'istanza di the PageHandlerFactory class:

istanze vengono creati dinamicamente per gestire le richieste di ASP .NET file. La classe PageHandlerFactory è l'implementazione di fabbrica predefinita del gestore per le pagine ASP.NET.

Come si può vedere dalla the MSDN article on HttpHandlers and HttpModules, il primario "built in" gestori sono quelli per

  • file ASP.NET standard (aspx),
  • servizi web (asmx),
  • gestori non UI generici (.ashx) e
  • uno per la gestione della traccia (trace.axd).

Non ce n'è uno che gestisca specificamente le richieste di immagini. Quindi dovresti andare =)

+0

Grazie mille. :-) Dove dice che le immagini e le risorse statiche sono servite dall'HttpHandler predefinito che serve le pagine ASPX? –

+0

@ WaterCoolerv2 Il fatto è che le richieste per le pagine .aspx sono gestite dall'HttpHandler predefinito. Non c'è una gestione speciale per le immagini quando sono incorporate in una pagina di aspx. Se sono controlli server (''), vengono elaborati come parte del normale ciclo di vita di ASP.NET. E anche se sono solo elementi '' statici, sono ancora elaborati e inseriti nel markup HTML reso generato da HttpHandler. Ora, se stai richiedendo direttamente un'immagine dal server web (e non richiedendo una pagina aspx), allora questa viene gestita, tuttavia IIS è impostato per gestirlo. – jadarnel27

Problemi correlati