Я вижу разницу в выводе Url.RouteUrl между моей машиной разработки и сервером развертывания. Я использую Visual Studio 2008, и мой блок развертывания - Windows 2003 Server. Я настроил Global.asax.cs для работы с расширением .aspx в моих таблицах маршрутизации. Однако когда я использую именованный маршрут "Search-Basic", из Url.RouteUrl не выводится ("Search-Basic", new {category = "Test", searchExpression = "search this"})
Посмотреть код:
<%= Url.RouteUrl("Search-Basic", new {category = "test", searchExpression="search this"}) %>
Global.asax.cs Код:
// routes for IIS 6 and version below
routes.MapRoute(
"Search-Basic",
"Search.aspx/Basic/{category}",
new { controller = "Search", action = "Basic", category = "All" }
);
routes.MapRoute(
"Default", // Route name
"{controller}.aspx/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
routes.MapRoute(
"Root",
"",
new { controller = "Home", action = "Index", id = "" }
);
В моем окне разработки я получаю ожидаемый результат: /Search.aspx/Basic/Test?searchExpression=search%20this
Однако на моем сервере развертывания я вообще ничего не получаю. Возможно, одно отличие состоит в том, что я запускаю приложение в виртуальном каталоге на моем сервере развертывания; что-то вроде: http://testmachine.com/sm/testappname/, где "/ sm" - это виртуальный каталог, а "/ testappname" - это виртуальный каталог, содержащий мое приложение.
Есть идеи?
Спасибо, любезно.