Skip to main content
.NETFramework4.7.2

Mimic ASP.NET Core Startup.cs to Unravel your dependence on System.Web.

Published
May 26, 2024
2y ago
Total Downloads
7.2K
7,179

Install

dotnet add package Unravel.Startup --version 0.1.36-alpha
ProductVersions
Other
.NETFramework4.7.2

README

Unravel.Startup

Unravel provides a fully configurable ASP.NET Core IWebHost on top of System.Web via OWIN, with forward-compatible dependency injection, configuration and logging.

  • Unravel.Application
    • Inherits from System.Web.HttpApplication
    • Provides OWIN Startup
    • Provides ASP.NET Core Startup, including ConfigureServices(IServiceCollection)
    • Builds an ASP.NET Core IWebHost, including an IServiceProvider
      • Static Unravel.Application.Services service locator
      • Scoped per HttpContext
      • With GetRequestServices() extension methods
  • OwinHost.CreateDefaultBuilder(), equivalent to WebHost.CreateDefaultBuilder().
    • Microsoft.Extensions.Configuration
      • ConfigurationManagerConfigurationProvider inspired by @benfoster
      • appsettings.json and appsettings.{env}.json
      • User Secrets (Development only)
      • Environment Variables
    • Microsoft.Extensions.DependencyInjection
    • Microsoft.Extensions.Logging
      • Configured from IConfiguration
      • Debug Logger

Setup

  1. Install Unravel.Startup in your Web Application project

  2. Search the project for an existing OWIN Startup Class:

    • There may be an OwinStartup attribute, e.g.

      [assembly: OwinStartup(typeof(UnravelExamples.Web.OwinStartup))]
      
    • Web.config may contain owin:appStartup, e.g.

      <appSettings>
        <add key="owin:appStartup" value="UnravelExamples.Web.OwinStartup" />
      </appSettings>
      

    In the instructions that follow, use that class name instead of Startup (or rename it to Startup).

  3. Open Global.asax.cs:

    • Rename the class to Startup
    • Make the class partial
    • Inherit from Unravel.Application
    -public class MvcApplication : System.Web.HttpApplication
    +public partial class Startup : Unravel.Application
    

    Make sure the Inherits in Global.asax updated, too

    -<%@ Application CodeBehind="Global.asax.cs" Inherits="UnravelExamples.Web.MvcApplication" Language="C#" %>
    +<%@ Application CodeBehind="Global.asax.cs" Inherits="UnravelExamples.Web.Startup" Language="C#" %>
    
  4. If you already have a Startup.cs:

    1. Make it partial
    2. Replace void Configuration(IAppBuilder app) with override void ConfigureOwin(IAppBuilder app)

    If you don't, create one.

    Then you can override ConfigureServices(), too.

    // Startup.cs
    public partial class Startup
    {
        public override void ConfigureServices(IServiceCollection services)
        {
        }
    
        public override void ConfigureOwin(IAppBuilder app)
        {
        }
    }
    

Changes from Previous Version

No structural changes between v0.1.30-alpha and v0.1.36-alpha.

Adoption Assessment

Assess this package against its supported frameworks, license, maintenance signals and dependency graph before making it a project standard.

This version is marked prerelease. Validate its API and upgrade path before production use.Compatibility metadata lists 1 target framework; confirm the exact target used by your application.

Related Guides & Workflows

Learn how to evaluate, integrate, or audit this package in your .NET project.