I try to add an area to my .NET Core project, but always I see that error:
RouteCreationException: An error occurred while creating the route with name '(My Area Name)'
My Code is :
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "custom",
template: "{area:my area name}/{{controller=AdminHome}/{action=Index}/{id?}");
});
}
And in configure services I add this code:
public void ConfigureServices(IServiceCollection services)
{
//...
services.AddRouting();
//...
}
And in controller I added:
[Area("My Area Name")]
public class AdminHomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
The error is :
RouteCreationException: An error occurred while creating the route with name 'custom' and template '{area:area name}/{{controller=Home}/{action=Index}/{id?}'. \r\n Microsoft.AspNetCore.Routing.RouteBase..ctor(string template, string name, IInlineConstraintResolver constraintResolver, RouteValueDictionary defaults, IDictionary constraints, RouteValueDictionary dataTokens) \r\n ArgumentException: There is an incomplete parameter in the route template. Check that each '{' character has a matching '}' character. \r\n Parameter name: routeTemplate
As stated in the error message, you have a stray {
in the route template that is making it invalid
template: "{area:my area name}/{{controller=AdminHome}/{action=Index}/{id?}");
^
|
here
You also need to rearrange the order of routes to avoid route conflicts.
app.UseMvc(routes => {
routes.MapRoute(
name: "custom",
template: "{area:my area name}/{controller=AdminHome}/{action=Index}/{id?}");
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
Reference Areas in ASP.NET Core