1
0
mirror of https://git.teknik.io/Teknikode/Teknik.git synced 2023-08-02 14:16:22 +02:00

Added handling of all missing routes with custom 404 page.

This commit is contained in:
Uncled1023 2016-10-26 13:19:48 -07:00
parent f472c4f5d7
commit c98e6cbf8e
6 changed files with 51 additions and 3 deletions

View File

@ -8,6 +8,16 @@ namespace Teknik
public static void RegisterRoutes(RouteCollection routes) public static void RegisterRoutes(RouteCollection routes)
{ {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Add this code to handle non-existing urls
routes.MapRoute(
name: "404-PageNotFound",
// This will handle any non-existing urls
url: "{*url}",
// "Shared" is the name of your error controller, and "Error" is the action/page
// that handles all your custom errors
defaults: new { controller = "Default", action = "NotFound" }
);
} }
} }
} }

View File

@ -91,6 +91,21 @@ namespace Teknik
return route; return route;
} }
public static SubdomainRoute MapSubdomainRoute(this AreaRegistrationContext context, string name, List<string> subDomains, List<string> domains, string url, object defaults, object constraints, string[] namespaces)
{
SubdomainRoute route = new SubdomainRoute(
subDomains,
domains,
url,
new RouteValueDictionary(defaults),
new RouteValueDictionary(constraints),
new RouteValueDictionary(new { Area = context.AreaName, Namespaces = namespaces }),
new MvcRouteHandler());
context.Routes.Add(name, route);
return route;
}
public static SubdomainRoute MapSubdomainRoute(this AreaRegistrationContext context, string name, List<string> subDomains, List<string> domains, string url, string area, object defaults) public static SubdomainRoute MapSubdomainRoute(this AreaRegistrationContext context, string name, List<string> subDomains, List<string> domains, string url, string area, object defaults)
{ {
SubdomainRoute route = new SubdomainRoute( SubdomainRoute route = new SubdomainRoute(

View File

@ -42,6 +42,17 @@ namespace Teknik.Areas.Home
new[] { typeof(DefaultController).Namespace } new[] { typeof(DefaultController).Namespace }
); );
// Register fallback for all bad requests
context.MapSubdomainRoute(
"Default.NotFound", // Route name
new List<string>() { "*" }, // Subdomains
new List<string>() { config.Host }, // domains
"{url}", // URL with parameters
new { controller = "Default", action = "NotFound" }, // Parameter defaults
new { url = "{*url}" },
new[] { typeof(DefaultController).Namespace }
);
context.MapSubdomainRoute( context.MapSubdomainRoute(
"Home.Index", // Route name "Home.Index", // Route name
new List<string>() { "www", string.Empty }, // Subdomains new List<string>() { "www", string.Empty }, // Subdomains

View File

@ -29,7 +29,7 @@
<br /> <br />
<div class="row text-center"> <div class="row text-center">
<h2> <h2>
Teknik is dedicated to the advancement of technology and ideas, and we provide these services to help those who try to innovate. We provide these services to help those who try to innovate.
</h2> </h2>
</div> </div>
</div> </div>

View File

@ -65,6 +65,18 @@ namespace Teknik.Controllers
string imageFile = Server.MapPath(Constants.LOGO_PATH); string imageFile = Server.MapPath(Constants.LOGO_PATH);
return File(imageFile, "image/svg+xml"); return File(imageFile, "image/svg+xml");
} }
[HttpGet]
[AllowAnonymous]
public ActionResult NotFound()
{
var errorController = new ErrorController();
if (errorController != null)
{
return errorController.Http404(new Exception("Page Not Found"));
}
return null;
}
} }
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]

View File

@ -37,11 +37,11 @@
<forms domain=".teknik.io" protection="All" enableCrossAppRedirects="true" name="TeknikAuth" /> <forms domain=".teknik.io" protection="All" enableCrossAppRedirects="true" name="TeknikAuth" />
</authentication> </authentication>
<compilation debug="true" targetFramework="4.6.2" /> <compilation debug="true" targetFramework="4.6.2" />
<httpRuntime targetFramework="4.5.2" maxRequestLength="1048576" executionTimeout="3600" /> <httpRuntime targetFramework="4.5.2" maxRequestLength="1048576" executionTimeout="3600" relaxedUrlToFileSystemMapping="true" />
<pages buffer="true" enableViewState="false" /> <pages buffer="true" enableViewState="false" />
</system.web> </system.web>
<system.webServer> <system.webServer>
<modules> <modules runAllManagedModulesForAllRequests="true">
<remove name="FormsAuthentication" /> <remove name="FormsAuthentication" />
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" /> <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
<add name="PerfModule" type="Teknik.Modules.PerformanceMonitorModule, Teknik" /> <add name="PerfModule" type="Teknik.Modules.PerformanceMonitorModule, Teknik" />