There are a couple of ways of controlling the routing behavior in Umbraco: customizing how the inbound request pipeline finds content & creating custom MVC routes that integrate within the Umbraco pip
There are a couple of ways of controlling the routing behavior in Umbraco: customizing how the inbound request pipeline finds content & creating custom MVC routes that integrate within the Umbraco pipeline.
Below lists the ways in which you can customize the inbound request pipeline, this is done by using native Umbraco plugin classes, notifications, or defining your own routes.
All Umbraco content is looked up based on the URL in the current request using an IContentFinder
. IContentFinder's you can create and implement on your own which will allow you to map any URL to a Umbraco content item.
See: IContentFinder documentation
A IContentLastChanceFinder
is a special implementation of an IContentFinder
for use with handling 404's. You can implement one of these plugins to decide which Umbraco content page you would like to show when the URL hasn't matched a Umbraco content node.
When creating packages or using class libraries, the SetContentLastChanceFinder
is a part of the Umbraco.Cms.Web.Website
NuGet package.
To set your own 404 finder create a IContentLastChanceFinder
and set it as the ContentLastChanceFinder
. A ContentLastChanceFinder
will always return a 404 status code. Example:
For more detailed information see: IContentFinder documentation
You can specify your own custom MVC routes to work within the Umbraco pipeline. It requires your controller to inherit from UmbracoPageController
and either implement IVirtualPageController
or use .ForUmbracoPage
when registering your route, for more information and a complete example of both approaches see Custom routing documentation
An example of registering a UmbracoPageController
using .ForUmbracoPage
:
This is an approach for mapping a custom route to a custom MVC controller. For creating routes for existing content pages you can use a custom MVC controller to handle the request by naming convention: see Custom Controllers - Route Hijacking.
You can subscribe to the RoutingRequestNotification
which is published right after the point when the PublishedRequestBuilder
is prepared - (but before it is ready to be processed). Here you can modify anything in the request before it is processed, eg. content, template, etc:
For more information on how to register and use notification handlers see Notifications documentation
Umbraco ships with signalR installed, find out how to add your own hub(s) to the existing setup
Umbraco ships with signalR installed. This article shows how to add your own hub(s) to the existing setup.
We are going to go for the most basic implementation possible, a status ping. So first create a new interface with the following code:
And then the actual hub:
Next up, is defining a custom route. For this, we are going to use a IAreaRoutes
and the base umbrace backend path so we dont have to reserve another path in the settings.
Last step in the setup is registering our custom route:
When setting up SignalR routes, add the route to ReservedPaths
in the appsettings.json
file like:
You need to provide the default reserved paths, else you'll run into an issue as mentioned on GitHub.
And lastly we can test the setup with some JavaScript in our view:
When you insert this in a view, you should see a signalR connection established
console message followed by Pong
.