When you add Piranha to your Startup.cs
as described in Application Setup, all of the available middleware and routing components are added by default. While this is perfect for most green field websites you may need to control the exactly what parts of the pipeline that are active when integrating Piranha into an existing application.
services.AddPiranha(options =>
{
options.AddRazorRuntimeCompilation = true;
});
Enables runtime compilation for Razor .cshtml
files. This is useful for development environments so that you don't have to restart the application every time you update a view or page. The default value of this property is false as you shouldn't have runtime compilation enabled in production.
The following options is available when calling UseCms()
to configure how the application listens to incoming requests.
services.AddPiranha(options =>
{
options.UseCms(o =>
{
o.UseAliasRouting = false;
});
});
If alias routing should be enabled in the middleware pipeline. The default value is true.
services.AddPiranha(options =>
{
options.UseCms(o =>
{
o.UseArchiveRouting = false;
});
});
If archive routing should be enabled in the middleware pipeline. The default value is true.
services.AddPiranha(options =>
{
options.UseCms(o =>
{
o.UsePageRouting = false;
});
});
If page routing should be enabled in the middleware pipeline. The default value is true.
services.AddPiranha(options =>
{
options.UseCms(o =>
{
o.UsePostRouting = false;
});
});
If post routing should be enabled in the middleware pipeline. The default value is true.
services.AddPiranha(options =>
{
options.UseCms(o =>
{
o.UseSitemapRouting = false;
});
});
If the middleware should listen for and handle incoming requests to /sitemap.xml
. The default value is true.
services.AddPiranha(options =>
{
options.UseCms(o =>
{
o.UseSiteRouting = false;
});
});
If site routing should be enabled in the middleware pipeline. This can be disabled if you only have one site in your application. The default value is true.
services.AddPiranha(options =>
{
options.UseCms(o =>
{
o.UseStartpageRouting = false;
});
});
If start page routing should be enabled in the middleware pipeline. The default value is true.
The following options is available when calling UseManager()
to configure the application.
services.AddPiranha(options =>
{
options.UseManager(o =>
{
o.JsonOptions =>
{
...
};
});
});
This action can be used if you need to modify the Newtonsoft JSON options used by the manager when serializing data through its API's. Please note that the following values can't be changed as they are needed by the manager application.
SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
services.AddPiranha(options =>
{
options.UseManager(o =>
{
o.XsrfCookieName = "MY_ANTIFORGERY_COOKIE";
});
});
The manager interface uses header based anti forgery validation to protect against CSRF attacks. This option configure the name of the cookie that the manager uses to communicate the token to the client. The default value is XSRF-REQUEST-TOKEN
.
services.AddPiranha(options =>
{
options.UseManager(o =>
{
o.XsrfHeaderName = "MY_ANTIFORGERY_TOKEN";
});
});
Sets the name of the header the manager will use to pass along the anti forgery token to its API. If you already use header based anti forgery protection in your application you should change this option to the name you're currently using to prevent conflicts. The default value is X-XSRF-TOKEN
.
Using the options pattern in ASP.NET you can also easily configure the routing options in your appsettings.json
. Please note that this is just an example and your appsettings.json
can have any structure you want.
appsettings.json
{
"Piranha": {
"Routing": {
"UseSiteRouting": false
}
}
}
Startup.cs
public Startup(IConfiguration configuration)
{
_config = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddPiranha(options =>
{
options.UseCms(o =>
_config.GetSection("Piranha")
?.GetSection("Routing")
?.Bind(o));
});
}