2013-03-12 12 views
7

Khi bạn có một thẻ hình ảnh trong ứng dụng của bạn như sau:Thành phần mã nào trong ứng dụng ASP.NET (WebForms hoặc MVC) phục vụ các tài nguyên trang web như hình ảnh?

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

hay như vậy:

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

hay như vậy:

<input type = "image" ...> 

và nếu điều này xảy ra là một ASP.NET ứng dụng (Web Forms hoặc MVC là không liên quan đến câu hỏi, tôi giả định, như mã phục vụ hình ảnh phải giống nhau), mà thành phần cụ thể phục vụ yêu cầu cho hình ảnh?

Đây có phải là máy chủ Web (IIS hoặc máy chủ web nội bộ của Visual Studio) hay là một ASP.NET HttpHandler mà Microsoft đã viết.

Tôi nhớ đã từng có một trình xử lý để phân phát tệp tài nguyên trong ASP.NET 2.0. Đó có phải là hình ảnh phục vụ hình ảnh không? Nó được gọi là gì?

Tại sao tôi hỏi câu hỏi này/Những gì tôi đang cố gắng để làm

Tôi có một ứng dụng ASP.NET MVC và tôi muốn viết riêng của tôi HttpHandler hoặc một điều khiển để phục vụ tài sản tĩnh như hình ảnh quá chúng được lưu trữ.

Những gì tôi đang lên kế hoạch để làm điều đó một cái gì đó gần như chính xác tương tự như http://blog.hompus.nl/2011/03/11/make-your-browser-cache-the-output-of-an-httphandler/http://archive.msdn.microsoft.com/ResourceCache

Tôi muốn chắc chắn rằng nếu có một đã được viết bởi Microsoft, tôi có thể cần phải thực hiện một số biện pháp phòng ngừa trong lúc gửi lại Http tiêu đề trong phản hồi chỉ để các tiêu đề httpHandler được xây dựng của Microsoft không bị mâu thuẫn với các tiêu đề tôi đã đặt.

Trả lời

1

Được rồi, có vẻ như tôi không quan tâm nhiều đến bất kỳ tài nguyên tĩnh nào và do đó, nó không đăng ký bộ lọc ISAPI với IIS cho bất kỳ tài nguyên nào .

Điều đó có nghĩa là, với tư cách là nhà phát triển muốn viết một trình xử lý cụ thể cho tài nguyên tĩnh, bạn hoàn toàn tự do làm bất cứ điều gì bạn muốn.

2

Theo mặc định, tất cả các yêu cầu về trang ASPX (bao gồm cả các tài nguyên tĩnh trong đó, giống như hình ảnh) được phục vụ bởi mặc định HttpHandler, đó là một thể hiện của the PageHandlerFactory class:

Instances được tạo ra tự động để xử lý các yêu cầu về ASP .NET tệp. Lớp PageHandlerFactory là trình xử lý mặc định thực hiện cho các trang ASP.NET.

Như bạn có thể nhìn thấy từ the MSDN article on HttpHandlers and HttpModules, chính "được xây dựng trong" xử lý là những cho

  • file ASP.NET tiêu chuẩn (.aspx),
  • các dịch vụ web (.asmx),
  • các trình xử lý chung, không phải UI (.ashx) và
  • một để xử lý dấu vết (trace.axd).

Không có ai xử lý cụ thể yêu cầu hình ảnh. Được rồi, bạn nên đi =)

+0

Cảm ơn rất nhiều. :-) Trường hợp nói rằng hình ảnh và tài nguyên tĩnh được phục vụ bởi HttpHandler mặc định phục vụ các trang ASPX? –

+0

@ WaterCoolerv2 Vấn đề là, các yêu cầu cho các trang .aspx được xử lý bởi HttpHandler mặc định. Không có xử lý đặc biệt cho hình ảnh khi chúng được nhúng vào một trang aspx. Nếu chúng là các điều khiển máy chủ (''), chúng được xử lý như một phần của vòng đời trang ASP.NET thông thường. Và ngay cả khi chúng chỉ là các phần tử '' tĩnh, chúng vẫn được xử lý và chèn vào đánh dấu HTML được tạo ra bởi HttpHandler. Bây giờ, nếu bạn đang trực tiếp yêu cầu một hình ảnh từ máy chủ web (và không yêu cầu một trang aspx), thì đó là xử lý tuy nhiên IIS được thiết lập để xử lý nó. – jadarnel27

Các vấn đề liên quan