Posinformatique.aspnetcore.server.aspnet est une bibliothèque pour héberger ASP .NET Core Web API sur ASP .NET non-core (WebForms et MVC) basé sur le .NET Framework.


Le posinformatique.aspnetcore.server.aspnet est un IHttpHandler ASP .net non-core. Lorsque la mise en œuvre interne posinformatique.aspnetcore.server.aspnet IHttpHandler est appelée, la requête HTTP est envoyée à l'infrastructure de base ASP .NET qui exécute la requête avec le même comportement s'il était hébergé dans une IIS, une console ou un kestrel dédié.
Le posinformatique.aspnetcore.server.aspnet est disponible directement sur le site officiel de NuGet. Pour télécharger et installer la bibliothèque sur votre projet Visual Studio en utilisant la ligne de commande NuGet suivante
Install-Package PosInformatique.AspNetCore.Server.AspNet
Dans un nouveau projet ASP .NET Web Forms / MVC non-core Project Installez l'infrastructure ASP .NET Core 2.X à l'aide de la commande NuGet suivante:
Install-Package Microsoft.AspNetCore
Install-Package Microsoft.AspNetCore.Mvc
Après avoir ajouté le package posinformatique.aspnetcore.server.aspnet sur votre projet ASP .NET WebForms ou MVC non-core, à l'intérieur de l' Application_Start de votre classe HttpApplication et de démarrage d'une instance ASP .NET Core IWebHost à l'aide de WebHost.CreateDefaultBuilder() Startup , de services supplémentaires, de services, ...). Au lieu de choisir Kestrel ou IIS pour héberger votre application ASP .NET Core, appelez la méthode UseAspNet() pour héberger votre application ASP .NET Core sur l'infrastructure ASP .NET Non-Core.
L' UseAspNet() nécessite de définir les routes de base qui seront interceptées et traiteront par l'infrastructure Core ASP .NET au lieu de non .NET non-core.
Ceci est un exemple d'un code Global.asax.cs derrière lequel construit, démarrez une application ASP .NET Core et redirigez toute la demande à partir des URL /api et /swagger vers l'application ASP .NET Core:
public class Global : System . Web . HttpApplication
{
protected void Application_Start ( object sender , EventArgs e )
{
WebHost . CreateDefaultBuilder ( )
. UseAspNet ( options =>
{
options . Routes . Add ( "api" ) ;
options . Routes . Add ( "swagger" ) ;
} )
. UseStartup < Startup > ( )
. Start ( ) ;
}
} Vous pouvez configurer votre application ASP .NET Core comme d'habitude avec la classe Startup en enregistrant des services supplémentaires. Ceci est un exemple d'une classe Startup qui enregistre l'infrastructure ASP .NET Core MVC et les extensions Swashbuckle.Aspnetcore pour ajouter la documentation à l'aide de l'interface utilisateur de Swagger.
public class Startup
{
public Startup ( IConfiguration configuration )
{
Configuration = configuration ;
}
public IConfiguration Configuration { get ; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices ( IServiceCollection services )
{
services . AddMvc ( ) ;
services . AddSwaggerGen ( c =>
{
c . SwaggerDoc ( "v1" , new Info { Title = "My API" , Version = "v1" } ) ;
// Set the comments path for the Swagger JSON and UI.
var xmlFile = $ " { Assembly . GetExecutingAssembly ( ) . GetName ( ) . Name } .xml" ;
var xmlPath = Path . Combine ( AppContext . BaseDirectory , "bin" , xmlFile ) ;
c . IncludeXmlComments ( xmlPath ) ;
} ) ;
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure ( IApplicationBuilder app , IHostingEnvironment env )
{
if ( env . IsDevelopment ( ) )
{
app . UseDeveloperExceptionPage ( ) ;
}
app . UseMvc ( routes =>
{
routes . MapRoute (
name : "default" ,
template : "{controller=Home}/{action=Index}/{id?}" ) ;
} ) ;
// Enable middleware to serve generated Swagger as a JSON endpoint.
app . UseSwagger ( ) ;
// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
// specifying the Swagger JSON endpoint.
app . UseSwaggerUI ( c =>
{
c . SwaggerEndpoint ( "/swagger/v1/swagger.json" , "My API V1" ) ;
} ) ;
}
} Vous devez être en jeu d'utiliser uniquement les composants et le service du noyau ASP .NET à l'intérieur de votre implémentation des contrôleurs. Évitez d'accéder aux composants ou aux services d'Asp .NET non-core à partir de vos implémentations de contrôleurs. Par exemple, assurez-vous d'accéder à l'ASP .NET Core HttpContext dans votre code Controllers et n'utilisez pas le HttpContext ASP .NET.

Comme le montre le dessin d'architecture précédent, dans votre code de contrôleurs, vous devez utiliser uniquement pour l'API ASP .NET Core Même vous pouvez accéder à l'API d'infrastructure non-core ASP .NET.
Étant donné que ASP .NET Core 3.x est basé uniquement sur le .NET Core 3.0 Runtime (et non sur le .NET Standard 2.0 comme avant avec l'ASP .NET Core 2.x), cette bibliothèque ne peut pas être utilisée pour héberger ASP .NET Core 3.x API Web sur l'infrastructure non-cœur ASP .NET.
Actuellement, le posinformatique.aspnetcore.server.aspnet ne peut fonctionner qu'avec l'infrastructure RAW ASP .NET Core et pour les implémentations de contrôleurs API Web. Il n'est pas possible d'utiliser cette bibliothèque avec les vues MVC Razor, car le projet Visual Studio utilise le compilateur Web non-core ASP .NET.
N'hésitez pas à cloner mon code et à soumettre quelques modifications ... c'est un projet open source, donc tout le monde est le bienvenu pour améliorer cette bibliothèque ... Soit dit en passant, je suis français ... alors peut-être que vous remarquerez que mon anglais n'est pas vraiment couramment ... alors n'hésitez pas à réparer mes chaînes de ressources ou ma documentation ... Merci!
Je tiens à remercier la société de dilitrust pour tester et m'a donné leurs commentaires de cette bibliothèque pour leurs applications WebForms ASP .NET qui ont intégré API intégrée sur ASP .NET Core Web.