ASP.Net MVC 2 Маршрутизация - PullRequest
0 голосов
/ 17 июля 2011

Мне нужен отзыв о проблеме, связанной с маршрутизацией, которую я обнаружил при публикации приложения ASP.NET MVC 2.В файле global.asax я определил следующие маршруты:

// Thumbnails routing.
// Sample URL: resizer/resizeImage/200/200/Error/error.jpg
routes.MapRoute("Resizer","Resizer/{action}/{width}/{height}/{folder}/{file}",
new  { controller = "Resizer", action = "ResizeImage", width = 100,height = 100,
folder = "Error", file = "error.jpg"
}   
);
// Default routing.
// Sample URL: /Home/Index
routes.MapRoute("Default",  "{controller}/{action}.aspx/{id}",
new { controller = "Home", action = "Index", id = (string)null }
);  

Итак, сначала мне пришлось добавить .aspx для маршрутизации по умолчанию, в противном случае хост-сервер (Aruba) не выполняет правильную маршрутизацию ...Первый вопрос: есть ли другой обходной путь для поддержания нормальной маршрутизации (т.е. без добавления .aspx)?

Маршрут Resizer должен позволять вызывать контроллер, который должен генерировать миниатюры изображений: он работает локально, но не когдавеб-сайт опубликован.

Кажется, что маршрут, такой как 'resizer / resizeImage / 200/200 / Error / error.jpg', не распознается.

Как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 18 июля 2011

спасибо за ваш ответ.

Я изменил маршрут, добавив «.aspx» к {action} также в маршруте Resizer. Теперь это выглядит так:

routes.MapRoute("Resizer", 
"Resizer/{action}.aspx/{width}/{height}/{folder}/{file}", 
new { controller = "Resizer", action = "ResizeImage", 
width = 100, height = 100, folder = "Error", file = "error" });

Кажется, он работает правильно, это единственный способ активировать маршрутизацию IIS.

Я также удалил расширение файла (.jpg), чтобы избежать проблем с символом Dot.

Marco

0 голосов
/ 18 июля 2011

Я не думаю, что есть другой способ избежать .aspx вместо "нормальной" маршрутизации.Как бы то ни было, я не думаю, что это имеет большое значение.Я также думаю, что в коде, который вы опубликовали (я не пробовал), маршрутизация не верна: чтобы добавить aspx, вы должны поставить aspx после имени контроллера, по умолчанию, как в resizer.Примерно так:

routes.MapRoute("Resizer", 
      "Resizer.aspx/{action}/{width}/{height}/{folder}/{file}", 
      new { controller = "Resizer", action = "ResizeImage", 
      width = 100, height = 100, folder = "Error", file = "error.jpg" });

/ Stefano

...