Я имел приложение ASP.Net MVC с правилами конфигурации маршрутизации, включая этот один:asp.net MVC конфигурации маршрутизации
routes.MapRoute(
"rule1",
"{controller}/{action}/{cid}/{language}/{itemID}/{uid}",
new { controller = "Home", action = "action1" }
, new[] { "MVCApp.Controllers" }
);
Я просто добавил новое действие с тем же количеством параметров и моей конфигурации маршрутизации изменились, как это (rule2 добавлено):
routes.MapRoute(
"rule2",
"{controller}/{action}/{cid}/{language}/{phoneNumber}/{uid}",
new { controller = "Home", action = "action2" }
, new[] { "MVCApp.Controllers" }
);
routes.MapRoute(
"rule1",
"{controller}/{action}/{cid}/{language}/{itemID}/{uid}",
new { controller = "Home", action = "action1" }
, new[] { "MVCApp.Controllers" }
);
Теперь, когда я звоню http://localhost:51650/Home/action2/1/en/1/1
это не путь к action1
и бросает исключение The parameters dictionary contains a null entry for parameter 'itemID' of non-nullable type 'System.Int64' for method 'System.Web.Mvc.JsonResult action1(System.String, Int32, Int64, Int64)
.
Инверсия порядка. Порядок добавления маршрутов влияет на работу маршрутов. добавьте первое правило1, а затем rule2 – NicoRiff
@NicoRiff Я только что обновил детали исключения. Есть ли способ, которым информация не маршрутизируется на правило2, а маршрутизация пропускает ее и принимает правило1 в действии (для URL-адреса http: // localhost: 51650/Home/action2/1/en/1/1')? – VSB