2013-03-12 9 views
7

Kiedy masz tag obrazu w aplikacji tak:Który komponent kodu w aplikacji ASP.NET (WebForms lub MVC) obsługuje zasoby serwisu WWW, takie jak obrazy?

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

lub tak:

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

lub tak:

<input type = "image" ...> 

a jeśli tak się stanie, aby być Aplikacja ASP.NET (Web Forms lub MVC nie ma znaczenia dla pytania, zakładam, że kod obsługujący obrazy musi być taki sam), który konkretny komponent obsługuje żądania obrazów?

Czy jest to serwer sieciowy (wewnętrzny serwer sieciowy IIS lub Visual Studio), czy jest to HttpHandler ASP.NET, który został napisany przez firmę Microsoft.

Pamiętam, że w programie ASP.NET 2.0 używany był moduł obsługi plików obsługujących pliki zasobów. Czy to też ten, który obsługuje obrazy? Jak to się nazywa?

Dlaczego tym pytaniem/Co usiłuję zrobić

Mam aplikacji ASP.NET MVC i chcę napisać własny zwyczaj HttpHandler lub kontroler służyć aktywa statycznych obrazów, tak jak że zostaną zbuforowani.

Co mam zamiar zrobić to coś niemal dokładnie podobny do http://blog.hompus.nl/2011/03/11/make-your-browser-cache-the-output-of-an-httphandler/ i http://archive.msdn.microsoft.com/ResourceCache

chcę, aby upewnić się, że jeśli jedna już napisany przez Microsoft, może trzeba podjąć pewne środki ostrożności podczas wysyłania z powrotem nagłówki HTTP w odpowiedź tak, aby nagłówki wbudowanych w Microsoft zestawów httpHandler nie były sprzeczne z tymi, które ustawiłem.

Odpowiedz

1

OK, wydaje mi się, że ASP.NET nie przejmuje się zbytnio statycznymi zasobami i dlatego nie rejestruje filtru ISAPI z IIS dla żadnego z tych zasobów .

Oznacza to, że jako programista, który chce napisać konkretny przewodnik dla zasobów statycznych, możesz zrobić wszystko, co chcesz.

2

Domyślnie wszystkie żądania strony aspx (w tym zasobów statycznych w nim, podobnie jak obrazy) są obsługiwane przez domyślny HttpHandler, który jest instancją the PageHandlerFactory class:

Przypadki są tworzone dynamicznie, aby wnioski o ASP .NET plików. Klasa PageHandlerFactory jest domyślną implementacją dla stron ASP.NET.

Jak widać z the MSDN article on HttpHandlers and HttpModules, podstawowym "wbudowany" teleskopowe są te dla

  • standardowych plików ASP.NET (.aspx)
  • usług internetowych (.asmx)
  • Ogólne, nie obsługujące interfejsu użytkownika procedury obsługi (.ashx) i
  • do obsługi śledzenia (trace.axd).

Nie ma konkretnej obsługi żądań obrazów. Więc powinieneś być dobry, aby przejść =)

+0

Dziękuję bardzo. :-) Gdzie jest napisane, że obrazy i zasoby statyczne są obsługiwane przez domyślny HttpHandler obsługujący strony ASPX? –

+0

@ WaterCoolerv2 Chodzi o to, że żądania stron .aspx są obsługiwane przez domyślny HttpHandler. Nie ma specjalnej obsługi dla obrazów, gdy są one osadzone na stronie aspx. Jeśli są to elementy sterujące serwera (''), są one przetwarzane jako część zwykłego trybu życia strony ASP.NET. I nawet jeśli są tylko statycznymi '' elementami, są one nadal przetwarzane i wstawiane do renderowanego znacznika HTML, który jest generowany przez HttpHandler. Teraz, jeśli bezpośrednio żądasz obrazu z serwera WWW (i nie żądasz strony aspx), jest to obsługiwane, ale usługa IIS jest obsługiwana. – jadarnel27

Powiązane problemy