Description
"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:
- [Discussion] Making "pubinternal" types in MVC internal aspnetcore#4932
- Remaining pubternal APIs in the shared framework aspnetcore#11312.
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