Skip to content

"Pubternal" APIs in ASP.NET Core have been removed #14708

Closed
@analogrelay

Description

@analogrelay

"Pubternal" APIs in ASP.NET Core have been removed

In order to better maintain the public API surface of ASP.NET Core, we've moved a large majority of the types in the *.Internal namespace (previously we used the term "pubternal" to refer to these) to be truly internal. Members in these namespaces were always in a gray area. They were never meant to be supported as public APIs and could break in minor releases (and often did). We've moved away from pubternal for a large majority of APIs (there are still a few edge cases) an as a result, code that used to depend on these APIs will be broken when moving to 3.0.

See these issues for more details:

Version introduced

3.0

Old behavior

Previously, these APIs were public, but in namespaces with the Internal in the name.

New behavior

These APIs are now internal and can no longer be used.

Reason for change

The guidance for these "pubternal" APIs was that they could change without notice and were not subject to our policies to prevent breaking changes. In 3.0 we determined that leaving them public (even in the Internal namespaces) was still confusing to customers.

Recommended action

Discontinue use of these APIs. If you have questions about alternate APIs, feel free to file issues at https://github.com/aspnet/AspNetCore

Category

  • ASP.NET Core

Affected APIs

All APIs in namespaces under Microsoft.AspNetCore or Microsoft.Extensions which have an Internal segment in the namespace name. For example:

  • Microsoft.AspNetCore.Mvc.Formatters.Xml.Internal
  • Microsoft.AspNetCore.Mvc.Cors.Internal
  • Microsoft.AspNetCore.Mvc.ViewFeatures.Internal
  • Microsoft.AspNetCore.Mvc.Formatters.Json.Internal
  • Microsoft.AspNetCore.Mvc.RazorPages.Internal
  • Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
  • Microsoft.AspNetCore.Mvc.TagHelpers.Internal
  • Microsoft.AspNetCore.Mvc.Internal
  • Microsoft.AspNetCore.Mvc.Razor.Internal
  • Microsoft.AspNetCore.Mvc.Formatters.Internal
  • Microsoft.AspNetCore.Mvc.Core.Internal
  • Microsoft.AspNetCore.Mvc.ModelBinding.Internal
  • Microsoft.AspNetCore.Authentication.Internal
  • Microsoft.AspNetCore.Builder.Internal
  • Microsoft.AspNetCore.DataProtection.Internal
  • Microsoft.AspNetCore.DataProtection.Cng.Internal
  • Microsoft.AspNetCore.Hosting.Internal
  • Microsoft.AspNetCore.Http.Internal
  • Microsoft.AspNetCore.Mvc.Core.Infrastructure
  • Microsoft.AspNetCore.Mvc.Razor.Internal
  • Microsoft.AspNetCore.Rewrite.Internal
  • Microsoft.AspNetCore.Routing.Internal
  • Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal
  • Microsoft.AspNetCore.Server.Kestrel.Https.Internal
  • Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
  • Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure

Issue metadata

  • Issue type: breaking-change

Metadata

Metadata

Assignees

Labels

breaking-changeIndicates a .NET Core breaking change

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions