There is very strange behavior in the route override concept. I am using Nop 4.5 version. What I understand is that in the Plugin we can create Route Provider and we can override existing Route Providers which are registered in Nop.Web RouteProvider to redirect to our page.
In my case, I am redirecting to my own plugin page when store is closed.
I override the route in my plugin this way
public partial class RouteProvider : BaseRouteProvider, IRouteProvider
{
public void RegisterRoutes(IEndpointRouteBuilder endpointRouteBuilder)
{
var lang = GetLanguageRoutePattern();
//store closed
endpointRouteBuilder.MapControllerRoute(ComingSoonPageDefaults.Display,
pattern: $"{lang}/storeclosed",
defaults: new { controller = "ComingSoonPage", action = "Display" });
}
public int Priority
{
get { return -1; }
}
}
But it always open the Common Route "CommonControll/StoreClosed"
Then for testing purpose what I did is, comment this one in "\Nop.Web\Infrastructure\RouteProvider.cs"
////store closed
//endpointRouteBuilder.MapControllerRoute(name: "StoreClosed",
// pattern: $"{lang}/storeclosed",
// defaults: new { controller = "Common", action = "StoreClosed" });
And modify my plugin route provider like this
public partial class RouteProvider : BaseRouteProvider, IRouteProvider
{
public void RegisterRoutes(IEndpointRouteBuilder endpointRouteBuilder)
{
var lang = GetLanguageRoutePattern();
//store closed
endpointRouteBuilder.MapControllerRoute(ComingSoonPageDefaults.Display,
pattern: $"{lang}/storeclosed",
defaults: new { controller = "ComingSoonPage", action = "Display" });
endpointRouteBuilder.MapControllerRoute(name: "StoreClosed",
pattern: $"{lang}/storeclosed",
defaults: new { controller = "Common", action = "StoreClosed" });
}
public int Priority
{
get { return -1; }
}
}
This starts showing my page, but when I move the Common Controller route at top, then it opens the Common Controller, That means whatever is registered first, it will show that. Can you any one respond, is this the right behavior?
Regards,
Jamil