diff --git a/zero.Core/Constants.cs b/zero.Core/Constants.cs
index b8cc2052..474e2059 100644
--- a/zero.Core/Constants.cs
+++ b/zero.Core/Constants.cs
@@ -78,5 +78,12 @@
public const string FolderAlias = "zero.folder";
public const string DefaultRootPageTypeAlias = "root";
}
+
+ public static class Routing
+ {
+ public const string InternalRoutePrefix = "/__zero/";
+
+ public const string ErrorRoute = InternalRoutePrefix + "error";
+ }
}
}
diff --git a/zero.Core/Options/RoutingOptions.cs b/zero.Core/Options/RoutingOptions.cs
index 06decfb5..03b2e099 100644
--- a/zero.Core/Options/RoutingOptions.cs
+++ b/zero.Core/Options/RoutingOptions.cs
@@ -12,6 +12,7 @@ namespace zero.Core.Options
DefaultEndpoint = new("ZeroFrontend", "Index");
EndpointResolvers = new();
PageResolvers = new();
+ ErrorReexecutionPath = "/error";
}
@@ -26,5 +27,10 @@ namespace zero.Core.Options
///
///
public RoutingPageResolverOptions PageResolvers { get; set; }
+
+ ///
+ ///
+ ///
+ public string ErrorReexecutionPath { get; set; }
}
}
diff --git a/zero.Core/Routing/ZeroRoutesTransformer.cs b/zero.Core/Routing/ZeroRoutesTransformer.cs
index cca82363..68eac401 100644
--- a/zero.Core/Routing/ZeroRoutesTransformer.cs
+++ b/zero.Core/Routing/ZeroRoutesTransformer.cs
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.Routing;
using Microsoft.AspNetCore.Routing;
+using System;
using System.Threading.Tasks;
namespace zero.Core.Routing
diff --git a/zero.Web/ZeroApplicationBuilderExtensions.cs b/zero.Web/ZeroApplicationBuilderExtensions.cs
index d4d7cb86..0f7f0a3c 100644
--- a/zero.Web/ZeroApplicationBuilderExtensions.cs
+++ b/zero.Web/ZeroApplicationBuilderExtensions.cs
@@ -1,5 +1,7 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
+using System;
+using zero.Core;
using zero.Core.Extensions;
using zero.Core.Options;
using zero.Core.Routing;
@@ -15,6 +17,11 @@ namespace zero.Web
string path = options.BackofficePath.EnsureStartsWith('/').TrimEnd('/');
+ if (!options.Routing.ErrorReexecutionPath.IsNullOrEmpty())
+ {
+ app.UseStatusCodePagesWithReExecute(options.Routing.ErrorReexecutionPath.EnsureStartsWith('/'), "?statusCode={0}");
+ }
+
app.UseMiddleware();
app.UseStaticFiles();
@@ -61,7 +68,7 @@ namespace zero.Web
{
return app.UseEndpoints(endpoints =>
{
- endpoints.MapDynamicControllerRoute("{**url}");
+ endpoints.MapDynamicControllerRoute("{**url}", state: null, order: 10);
});
}
}