dotnet / systemweb-adapters

MIT License
337 stars 59 forks source link

System.Web adapters for ASP.NET Core

This project provides a collection of adapters that help migrating from System.Web.dll based ASP.NET projects to ASP.NET Core projects. The adapters currently include:

These adapters help enable large scale, incremental migration from ASP.NET to ASP.NET Core. For more details on incremental migration from ASP.NET to ASP.NET Core, see Incremental ASP.NET to ASP.NET Core Migration.

Get started

Use the Get started with incremental ASP.NET to ASP.NET Core migration guide in the docs to start using the System.Web adapters as part of an incremental migration from ASP.NET to ASP.NET Core.

Set up

The following steps are needed to use the System.Web adapters with an ASP.NET project:

  1. Optional for nightly adapter builds: Set up NuGet.config to point to the CI feed:
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
     <packageSources>
       <!--To inherit the global NuGet package sources remove the <clear/> line below -->
       <clear />
       <add key="nuget" value="https://api.nuget.org/v3/index.json" />
       <add key=".NET Libraries Daily" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-libraries/nuget/v3/index.json" />
     </packageSources>
    </configuration>
  2. Install Microsoft.AspNetCore.SystemWebAdapters to supporting libraries
    • Class libraries can target .NET Standard 2.0 if desired which will ensure you are using the shared surface area
    • If you find that there's still some missing APIs, you may cross-compile with .NET Framework to maintain that behavior and handle it in .NET core in some other way
    • There should be no manual changes to enable using supported surface area of the adapters. If a member is not found, it is not currently supported on ASP.NET Core
  3. Install Microsoft.AspNetCore.SystemWebAdapters.CoreServices to your ASP.NET Core application
  4. Install Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices to your ASP.NET Framework application
    • The package installation will add a new module to your web.config. This module handles any customizations that are required to help migrate to .NET Core.
  5. For your ASP.NET Core application:
    • Register the adapter services:
      builder.Services.AddSystemWebAdapters();
    • Add the middleware after routing but before endpoints (if present);
      app.UseSystemWebAdapters();

Supported Targets

Known Limitations

Below are some of the limitations of the APIs in the adapters. These are usually due to building off of types used in ASP.NET Core that cannot fully implement the shape of the API in ASP.NET Framework. In the future, analyzers may be used to flag usage to recommend better patterns.

Reporting security issues and bugs

Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) secure@microsoft.com. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the Security TechCenter.

Contributing

See CONTRIBUTING.md

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

Code of conduct

See CODE-OF-CONDUCT