Closed brgrz closed 10 years ago
This apparently happens because I have two routes defined on a single controller action:
[Route("{*path}", Order=0)]
[Route("categories/list/{*path}", Order=1)]
Though I don't quite get it why it wouldn't be allowed here:
`if (localizationCollectionRoutes.Count == 1)
{
return localizationCollectionRoutes;
}
if (!Configuration.AddTranslationToSimiliarUrls)
{
throw new InvalidOperationException(
string.Format(
"Multiple Routes found for given Controller '{0}' and Action '{1}'." +
" Narrow down your selection or use AddTranslationToSimiliarUrls if you want to translate similiar Routes at once.",
controller, action));
}
LocalizationCollectionRoute localizationCollectionRoute = localizationCollectionRoutes.First();
if (localizationCollectionRoutes.Any(x => x.Url() != localizationCollectionRoute.Url()))
{
throw new InvalidOperationException(
string.Format(
"Multiple Routes with different Url found for given Controller '{0}' and Action '{1}'." +
" Narrow down your selection.", controller, action));
}`
Normally you would not want to translate multiple routes at once when the url differs (thats why AddTranslationToSimiliarUrls does not work here). In previous versions in this case the first route was translated - this could and already did lead to confusions so I added this check.
For this use case you could add (one or if you want to translate both two) named routes.
// Route definition
[Route("{*path}", Order=0, Name="Name1")]
[Route("categories/list/{*path}", Order=1, Name="Name2")]
ActionResult MyAction(string path)
// Localization
localization.ForNamedRoute("Name1").AddTranslation ...
localization.ForNamedRoute("Name2").AddTranslation ...
If you have a better idea to handle this situations I'm open for suggestions.
The new version is not working fine for me at all, various issues, will have to dig into it and troubleshoot. I will let you know what I've discovered.
If you post your action definition and RouteLocalization configuration and the expected / received result I'm sure we can clarify those issues. The changes from 2.0.0-alpha-6 to 2.1.0 are mostly changes to RouteArea / RoutePrefix handling (see Translating RoutePrefix and RouteArea).
After removing the 2nd route above, rebuilt and rerun, no route gets hit. That's with v.2.1. The exact same code works fine and defaults to one default content route with version 2.0.0-alpha-6.
Which were the commits that introduced these changes?
Somehow things got working by rebuilding again. I also made some progress using your Glimpse package.
After upgrading to v.2.1.0 I am now getting this exception for apparent no reason:
Multiple Routes found for given Controller 'Directory' and Action 'List'. Narrow down your selection or use AddTranslationToSimiliarUrls if you want to translate similiar Routes at once.
If I set the AddTranslationToSimiliarUrls to true in configuration, it just results in another exception:
Multiple Routes with different Url found for given Controller 'Directory' and Action 'List'. Narrow down your selection.
The issue could be connected to the fact I use T4MVC in my projects, which adds additional parameterless routes to routes that have parameters.
However, this issue was not present in 2.0.0-alpha-6