Попробуйте (обратите внимание, что в исходном сообщении пропущена запятая):
routes.MapRoute("ByKey", "{id}",
new { controller = "Home", action = "Index", id=""});
Я бы, однако, сделал бы это немного более объяснительным, чтобы предотвратить столкновения позже, даже если это означает немного более длинные URI:
routes.MapRoute("ByKey", "ByKey/{id}",
new { controller = "Home", action = "Index", id=""});
И поместите это как первую команду MapRoute. Порядок имеет значение там, и первый маршрут, который вы добавляете, является первым маршрутом для URL, который будет проверен.