SplatDev.Umbraco.Plugins.ShortUrls
2.1.4
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package SplatDev.Umbraco.Plugins.ShortUrls --version 2.1.4
NuGet\Install-Package SplatDev.Umbraco.Plugins.ShortUrls -Version 2.1.4
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="SplatDev.Umbraco.Plugins.ShortUrls" Version="2.1.4" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SplatDev.Umbraco.Plugins.ShortUrls" Version="2.1.4" />
<PackageReference Include="SplatDev.Umbraco.Plugins.ShortUrls" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SplatDev.Umbraco.Plugins.ShortUrls --version 2.1.4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: SplatDev.Umbraco.Plugins.ShortUrls, 2.1.4"
#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.
#:package SplatDev.Umbraco.Plugins.ShortUrls@2.1.4
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SplatDev.Umbraco.Plugins.ShortUrls&version=2.1.4
#tool nuget:?package=SplatDev.Umbraco.Plugins.ShortUrls&version=2.1.4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
ShortUrls
Umbraco short URL plugin — generate, store, and resolve short URLs backed by any EF Core DbContext. Supports Umbraco 13 (net8.0) and Umbraco 17 (net10.0).
Compatibility
| Umbraco | .NET | Package Version |
|---|---|---|
| 13.x | 8.0 | 2.0.0 |
| 17.x | 10.0 | 2.0.0 |
Installation
dotnet add package SplatDev.Umbraco.Plugins.ShortUrls
Quick Start
Register in Program.cs:
builder.CreateUmbracoBuilder()
.AddBackOffice()
.AddWebsite()
.AddShortUrls() // <-- add this
.Build();
Configuration
Wire up your EF Core DbContext to implement IShortUrl:
// appsettings.json
{
"ConnectionStrings": {
"ShortUrlDb": "Server=.;Database=ShortUrls;..."
}
}
Usage
Implement IShortUrl
Your entity must implement the interface:
using SplatDev.Umbraco.Plugins.ShortUrls.Models;
public class MyShortUrl : IShortUrl
{
public int Id { get; set; }
public string? ShortUrl { get; set; }
public string Url { get; set; } = "";
}
Generate and Resolve
using SplatDev.Umbraco.Plugins.ShortUrls.Services;
var service = new ShortUrlService<MyShortUrl>(dbContext);
// Generate a unique short code (collision-safe)
string code = service.GenerateShortUrl(); // e.g. "xK7mP2"
// Save to DB
dbContext.Add(new MyShortUrl { ShortUrl = code, Url = "https://example.com/long/path" });
await dbContext.SaveChangesAsync();
// Resolve a short URL
string redirectUrl = service.Get(code);
// → "https://example.com/long/path"
Front-End Controller
The ShortUrlController<T> implements IVirtualPageController — it intercepts requests to /s/{random} and issues a 302 redirect to the mapped URL:
// Maps /s/xK7mP2 → redirect to stored full URL
[HttpGet]
public async Task<IActionResult> GetFromShortUrl(string shortUrl)
{
var redirectUrl = shortUrlService.Get(shortUrl);
return Redirect(redirectUrl);
}
Architecture
| Component | Role |
|---|---|
IShortUrl |
Interface your entity must implement (ShortUrl, Url) |
IShortUrlService |
Generate unique codes, check existence, resolve |
ShortUrlController<T> |
MVC controller handling /s/{random} → 302 redirect |
ShortUrlExtensions |
Random URL-safe code generation (collision-checked) |
License
MIT © SplatDev
| Product | Versions 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 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- Microsoft.EntityFrameworkCore (>= 10.0.7)
- Microsoft.EntityFrameworkCore.SqlServer (>= 10.0.7)
- Microsoft.Extensions.FileProviders.Embedded (>= 10.0.6)
- Umbraco.Cms.Core (>= 17.3.4)
- Umbraco.Cms.Infrastructure (>= 17.3.4)
- Umbraco.Cms.Web.Common (>= 17.3.4)
- Umbraco.Cms.Web.Website (>= 17.3.4)
-
net8.0
- Microsoft.EntityFrameworkCore (>= 8.0.20)
- Microsoft.EntityFrameworkCore.SqlServer (>= 8.0.20)
- Microsoft.Extensions.FileProviders.Embedded (>= 8.0.11)
- Umbraco.Cms.Core (>= 13.12.0)
- Umbraco.Cms.Infrastructure (>= 13.12.0)
- Umbraco.Cms.Web.Common (>= 13.12.0)
- Umbraco.Cms.Web.Website (>= 13.12.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.