Sidio.Sitemap.AspNetCore 2.6.0

Prefix Reserved
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Sidio.Sitemap.AspNetCore --version 2.6.0                
NuGet\Install-Package Sidio.Sitemap.AspNetCore -Version 2.6.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Sidio.Sitemap.AspNetCore" Version="2.6.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Sidio.Sitemap.AspNetCore --version 2.6.0                
#r "nuget: Sidio.Sitemap.AspNetCore, 2.6.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Sidio.Sitemap.AspNetCore as a Cake Addin
#addin nuget:?package=Sidio.Sitemap.AspNetCore&version=2.6.0

// Install Sidio.Sitemap.AspNetCore as a Cake Tool
#tool nuget:?package=Sidio.Sitemap.AspNetCore&version=2.6.0                

Sidio.Sitemap.AspNetCore

Sidio.Sitemap.AspNetCore is a lightweight .NET library for generating sitemaps and a sitemap index in ASP .NET Core applications.

In addition to sitemap and sitemap index generation, news, images and video extensions are also supported.

build NuGet Version Coverage Status

Installation

Add the package to your project.

Usage

There are two ways to generate sitemaps: manually or by using middleware. When using middleware, the sitemap is generated automatically.

Building sitemaps manually

Sitemap

// di setup
services.AddHttpContextAccessor();
services.AddDefaultSitemapServices<HttpContextBaseUrlProvider>();

// controller
[HttpGet]
public IActionResult Sitemap()
{
    var nodes = new List<SitemapNode> { new ("page.html"), SitemapNode.Create(Url.Action("Index")) };
    var sitemap = new Sitemap(nodes);
    return new SitemapResult(sitemap);
}

Sitemap and sitemap index

[Route("sitemap.xml")]
public IActionResult SitemapIndex()
{
    var sitemapIndex = new SitemapIndex();
    
    // basic usage:
    sitemapIndex.Add(new SitemapIndexNode(Url.Action("Sitemap1")));
    
    // or: this extension function fixes the null reference warning
    // on the line above:
    var addResult = sitemapIndex.TryAdd(Url.Action("Sitemap2"));
    
    // or: use the Create function
    sitemapIndex.Add(SitemapIndexNode.Create(Url.Action("Sitemap1")));
    
    return new SitemapResult(sitemapIndex);
}

[Route("sitemap-1.xml")]
public IActionResult Sitemap1()
{
    // ...
}

[Route("sitemap-2.xml")]
public IActionResult Sitemap2()
{
    // ...
}

Advanced setup and extensions

See the Sidio.Sitemap.Core package documentation to read more about additional properties and sitemap extensions (i.e. news, images and videos).

Using middleware

By using the SitemapMiddlware the sitemap is generated automatically using reflection. Currently only ASP .NET Core controllers and actions are supported. Razor pages will be supported in the future.

Setup

In Program.cs, add the following:

// di setup
builder.Services.
    .AddHttpContextAccessor()
    .AddDefaultSitemapServices<HttpContextBaseUrlProvider>()
    .AddSitemapMiddleware(
        options =>
        {
            options.EndpointInclusionMode = EndpointInclusionMode.OptIn;
            options.CacheEnabled = false; // (optional) default is false, set to true to enable caching
            options.CacheAbsoluteExpirationInMinutes = 60; // (optional) default is 60 minutes
        })

// use the middleware 
app.UseSitemap();

Controller and action attributes

Decorate your controllers and/or actions with the [SitemapInclude] or [SitemapExclude] attribute.

When using OptIn mode, only controllers and/or actions decorated with [SitemapInclude] will be included in the sitemap.

[SitemapInclude] // this action will be included in the sitemap
public IActionResult Index()
{
    return View();
}

When using OptOut mode, controllers and/or actions decorated with [SitemapExclude] will be excluded from the sitemap.

[SitemapExclude] // this action will not be included in the sitemap
public IActionResult Index()
{
    return View();
}

Razor pages

Similar to controllers and actions, the attributes can be used in razor pages:

@page
@attribute [SitemapExclude]
@model LoginModel
@{
    ViewData["Title"] = "My login page";
}

Caching

Configure the IDistributedCache to use caching of the Sitemap.

FAQ

  • Exception: Unable to resolve service for type 'Microsoft.AspNetCore.Http.IHttpContextAccessor' while attempting to activate 'Sidio.Sitemap.AspNetCore.HttpContextBaseUrlProvider'.
    • Solution: call services.AddHttpContextAccessor(); to register the IHttpContextAccessor.

See also

Used by

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Sidio.Sitemap.AspNetCore:

Package Downloads
Sidio.Sitemap.Blazor

Sidio.Sitemap.Blazor is a lightweight .NET library for generating sitemaps in Blazor applications.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.7.0-preview 60 11/22/2024
2.6.0 205 11/13/2024
2.5.4 197 11/7/2024
2.5.3 944 10/14/2024
2.5.2 512 8/28/2024
2.5.1 168 8/20/2024
2.5.0 395 7/22/2024
2.4.0 109 7/18/2024
2.3.1 121 7/12/2024
2.2.3 304 5/19/2024
2.2.0 179 4/3/2024
2.1.0 148 3/22/2024
2.0.0 311 3/14/2024