Я считаю, что проблема в том, что ваш Default
маршрут неверен:
routes.MapRoute("Default", "{controller}/{id}/{action}/{arg}",
new { controller = "Home", action = "Index",
id = UrlParameter.Optional, arg = UrlParameter.Optional }
);
У вас не может быть необязательного параметра, предшествующего обязательному параметру. Что произойдет, если вы измените вышеуказанный маршрут на этот?
routes.MapRoute("Default", "{controller}/{action}/{id}/{arg}",
new { controller = "Home", action = "Index",
id = UrlParameter.Optional, arg = UrlParameter.Optional }
);