2010-06-16 28 views
23

Tôi có một HttpHandler rằng thay đổi kích thước hình ảnh dựa trên chuỗi truy vấn, vì vậy yêu cầu một cái gì đó như:Làm cách nào để đăng ký nhiều đường dẫn cho HttpHandler trong IIS7?

http://server/image.jpg?width=320&height=240

sẽ cung cấp cho bạn một hình ảnh thay đổi kích cỡ đó là 320x240.

Trong IIS Manager, dưới Handler Mappings, tôi ánh xạ đường dẫn của trình xử lý là *.jpg,*.gif,*.bmp,*.png. Tuy nhiên, điều này không kích hoạt trình xử lý. Nếu tôi thay đổi nó thành chỉ *.jpg, thì nó sẽ hoạt động.

Câu hỏi của tôi là, tôi có phải tạo 4 mục ánh xạ riêng biệt, một mục cho mỗi loại hình ảnh hoặc có cách nào đó để kết hợp nhiều tiện ích mở rộng trong một đường dẫn không?

Trả lời

6

Bạn có thể thêm bội số của cùng một trình xử lý miễn là bạn thay đổi thuộc tính name.

12

Câu trả lời của Daniel T:

Chỉ ra rằng ánh xạ xử lý của IIS 7 khác với ánh xạ xử lý của IIS 6. Trong IIS 6, bạn có thể ánh xạ các trình xử lý của mình như thế này trong web.config:

<configuration> 
    <system.web> 
    <httpHandlers> 
     <add verb="GET" path="*.jpg,*.gif,*.bmp,*.png" type="YourProject.ImageHandler" /> 
    </httpHandlers> 
    </system.web> 
</configuration> 

Nó cho phép bạn sử dụng nhiều đường dẫn, phân tách bằng dấu phẩy. Trong IIS 7, nó nằm trong một phần khác:

<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="ImageHandler for JPG" path="*.jpg" verb="GET" type="YourProject.ImageHandler" resourceType="File" /> 
     <add name="ImageHandler for GIF" path="*.gif" verb="GET" type="YourProject.ImageHandler" resourceType="File" /> 
     <add name="ImageHandler for BMP" path="*.bmp" verb="GET" type="YourProject.ImageHandler" resourceType="File" /> 
     <add name="ImageHandler for PNG" path="*.png" verb="GET" type="YourProject.ImageHandler" resourceType="File" /> 
    </handlers> 
    </system.webServer> 
</configuration> 

Nó không hỗ trợ nhiều đường dẫn, vì vậy bạn cần ánh xạ trình xử lý cho mỗi đường dẫn.

Bạn có thể sẽ phải kết thúc bản đồ nó ở cả hai nơi vì máy chủ dev nội bộ Visual Studio của sử dụng IIS 6 (hoặc IIS 7 chạy trong chế độ tương thích), trong khi các máy chủ sản xuất có lẽ là sử dụng IIS 7.

+1

này là câu trả lời cho tôi, tôi nâng cấp từ 3.5 & MVC 2 lên 4.5.2 & MVC 3. Tôi biết di chuyển đến phần , nhưng cho đến bây giờ tôi đã không nhận ra rằng việc sử dụng 'đường dẫn' đã để được thay đổi, cảm ơn! – WillDud

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