У меня была аналогичная проблема, как представлено здесь: Using ASP.NET routing to serve static filesИспользование маршрутизации ASP.NET для обслуживания статических файлов (часть 2)
В RouteConfig, я добавил следующие строки:
routes.Add ( " Изображения ABC ", новый маршрут (" Images/abc/{* filename} ", новый ImageRouteHandler (" abc ")));
routes.Add ( «Images XYZ», новый маршрут («Images/xyz/{* filename}», новый ImageRouteHandler («xyz»)));
я нашел довольно приличную реализацию ImageRouteHandler
здесь: http://www.phpvs.net/2009/08/06/aspnet-mvc-how-to-route-to-images-or-other-file-types/, я просто добавил параметр в CTOR построить физический путь ...
Constraint: У меня есть другие пути в Images
, рядом с АВС или XYZ, что я не хочу, чтобы меня направили.
Примечание: Я использую {*filename}
так я могу сослаться на несколько сегментов ... подробнее здесь: http://msdn.microsoft.com/en-us/library/cc668201%28v=vs.100%29.aspx#handling_a_variable_number_of_segments_in_a_url_pattern
Вопросы:
Могу ли я объединить эти 2 маршрута в 1 одном операторе без нарушают ограничение? возможно, использование некоторого правильного выражения , такого как
Images/[abc|xyz]/...
Позиция имеет значение. ниже или выше маршрутизации по умолчанию.
routes.MapRoute ( название: "По умолчанию", URL: "{контроллер}/{действие}/{ID}", по умолчанию: новый {контроллер = "Home", действие = "Index", идентификатор = UrlParameter.Optional} );
а) если код размещен выше маршрутизации по умолчанию, это испортит RedirectToAction
б) и если код размещен ниже маршрутизации по умолчанию, он не будет ручка непосредственная маршрутизация, например.
Images/abc/img.jpg
не будет обработаны, ноImages/abc/level1/level2/level3/img.jpg
будет обработаны
Почему? без понятия.