CWDev.StaticFileOptionsExtender 1.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package CWDev.StaticFileOptionsExtender --version 1.0.0
NuGet\Install-Package CWDev.StaticFileOptionsExtender -Version 1.0.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="CWDev.StaticFileOptionsExtender" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add CWDev.StaticFileOptionsExtender --version 1.0.0
#r "nuget: CWDev.StaticFileOptionsExtender, 1.0.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 CWDev.StaticFileOptionsExtender as a Cake Addin
#addin nuget:?package=CWDev.StaticFileOptionsExtender&version=1.0.0

// Install CWDev.StaticFileOptionsExtender as a Cake Tool
#tool nuget:?package=CWDev.StaticFileOptionsExtender&version=1.0.0

Static File Options Extender

Purpose:

  1. Enable .NET applications to serve static files which have been compressed via gzip and/or brotli
    compression algorithms, correctly mapping their original file's content-types and response headers.
  2. Allow user to extend the Options Class to add additional compression types and configure mappings.

To Use:

Abstract:

.NET WebApplicationBuilder can be leveraged to configure the application HTTP Request Pipeline.
Within that Pipeline StaticFileMiddleware can be used to serve static files.
Typically, the app.UseStaticFiles(StaticFileOptions options) middleware configures a few key
steps. This library is mostly concerned with TWO -- Providers and Handlers -- regarding:

  • Mapping files content-types:
    • IContentTypeProvider StaticFileOptions.ContentTypeProvider*
  • Adding or changing the response headers:
    • Action<StaticFileResponseContext> StaticFileOptions.OnPrepareResponse*

StaticFileOptions StaticFileOptionsExtender.GetOptions

public static StaticFileOptions GetOptions()
{
    var customFileTypeProvider = new CustomContentTypeProvider();
    return new StaticFileOptions
    {
        ContentTypeProvider = customFileTypeProvider,                // <-- *
        OnPrepareResponse = (StaticFileResponseContext context) =>   // <-- *
        {
            // In addition to the MIME type also set the according encoding header (e.g. "br")
            if (CompressionEncodings.TryGetValue(Path.GetExtension(context.File.Name), out string? encoding))
            {
                context.Context.Response.Headers.ContentEncoding = encoding;
            }
        }
    };
}

Specifically, StaticFileOptionsExtender leverages a class inheriting from IContentTypeProvider
to extend the MIME type mappings for the 380 most commonly used file types (default).
This library originally was built to enable .NET to serve static files which have been compressed for WebGL
by building from Unity.

Overview:

Contribute:

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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.0.3 29 6/30/2024
2.0.2 35 6/30/2024
2.0.1 28 6/29/2024
2.0.0 30 6/29/2024
1.0.1 35 6/28/2024
1.0.0 31 6/28/2024