Vì vậy, tôi có một con đường như thế này trong ứng dụng MVC 3 của tôi chạy dưới IIS 7:MVC định tuyến khi một tập tin thực sự tồn tại ở vị trí quy định
routes.MapRoute(
"VirtualTourConfig",
"virtualtour/config.xml",
new { controller = "VirtualTour", action = "Config" }
);
Bí quyết là một tập tin thực sự tồn tại ở/virtualtour/config.xml. Có vẻ như yêu cầu này chỉ trả về tệp xml tại vị trí đó thay vì nhấn tuyến đường, xử lý XML, thực hiện một số thay đổi và trả về một XmlResult tùy chỉnh.
Bất kỳ đề xuất nào về cách tôi có thể yêu cầu ứng dụng của tôi truy cập tuyến đường chứ không phải tệp thực sự trong trường hợp tệp tồn tại trên đĩa?
EDIT: Dường như tôi có thể sử dụng routes.RouteExistingFiles = true;
trong phương pháp RegisterRoutes của Global.asax để yêu cầu ứng dụng bỏ qua các tệp trên đĩa. Tuy nhiên, điều này đặt cờ toàn cầu và phá vỡ nhiều yêu cầu khác trong ứng dụng. Ví dụ, tôi vẫn muốn các cuộc gọi đến /assets/css/site.css để trả về tệp CSS mà không cần phải thiết lập cụ thể các tuyến cho mỗi tài sản tĩnh. Vì vậy, bây giờ câu hỏi trở thành, là có một cách để làm điều này trên cơ sở mỗi tuyến đường?
Tôi không nghĩ rằng có một cách dễ dàng để đạt được điều này. Tại sao bạn không chỉ cần di chuyển tệp tĩnh vào thư mục '~/App_Data'? –