Posinformatique.aspnetcore.server.aspnet ist eine Bibliothek für ASP .NET Core-Web-API auf ASP .NET Non-Core (WebForms und MVC) -Frastruktur basierend auf dem .NET-Framework.


Die posinformatique.aspnetcore.server.aspnet ist ein ASP .NET-Nicht-Core- IHttpHandler , das abhängig von konfigurierten Routen in der ASP .NET-Nicht-Core-Infrastruktur ausgeführt wird. Wenn die interne Implementierung von posinformatique.aspnetcore.server.aspnet IHttpHandler aufgerufen wird, wird die HTTP -Abfrage an die ASP .NET -Kerninfrastruktur gesendet, die die Abfrage mit demselben Verhalten ausführt, wenn sie in einem dedizierten IIS-, Konsolen- oder Kestrel -Host gehostet wurde.
Die posinformatique.aspnetcore.server.aspnet ist direkt auf der offiziellen Nuget -Website verfügbar. So herunterladen und installieren
Install-Package PosInformatique.AspNetCore.Server.AspNet
In den neuen ASP .NET-Webformularen/MVC-Nicht-Core-Projekt installieren Sie die ASP .NET Core 2.x-Infrastruktur mit dem folgenden Nuget-Befehl:
Install-Package Microsoft.AspNetCore
Install-Package Microsoft.AspNetCore.Mvc
Nach dem Hinzufügen des possinformatiquen.aspnetcore.server.aspnet -Pakets in Ihrem ASP .NET WebForms oder MVC-Nicht-Core-Projekt im Inneren des Application_Start Ihrer HttpApplication class-Builds und starten Sie mit dem ASP .NET-Kern- IWebHost Instanz mit den Klassiker WebHost.CreateDefaultBuilder() und verwandtem API ( Startup Class). Wenn Sie stattdessen Kestrel oder IIS auswählen, um Ihre ASP .NET-Core-Anwendung zu hosten, rufen Sie die Methode UseAspNet() auf, um Ihre ASP .NET-Core-Anwendung auf der ASP .NET-Nicht-Core-Infrastruktur zu hosten.
Die UseAspNet() erfordert, um die Basisrouten zu definieren, die von der ASP .NET-Kerninfrastruktur anstelle von ASP .NET-Nicht-Core-Infrastruktur verarbeitet werden.
Dies ist ein Beispiel für einen Global.asax.cs -Code, den sich dahinter erstellt, starten Sie eine ASP .NET -Kernanwendung und leiten Sie alle Anforderungen ab, die mit /api und /swagger in die ASP .NET -Kernanwendung beginnen:
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 ( ) ;
}
} Sie können Ihre ASP .NET Core -Anwendung wie gewohnt mit der Startup konfigurieren, indem Sie zusätzliche Dienste registrieren. Dies ist ein Beispiel für eine Startup -Klasse, die die ASP .NET -Kern -MVC -Infrastruktur und die Erweiterungen von swashbuckle.aspnetcore registriert, um die Dokumentation mit der Swagger -Benutzeroberfläche hinzuzufügen.
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" ) ;
} ) ;
}
} Sie müssen nur die Komponenten und den Service des ASP .NET -Kerns innerhalb Ihrer Controller -Implementierung verwenden. Vermeiden Sie den Zugriff auf die Komponenten oder Dienste von ASP .NET-Nicht-Kern von Ihren Controller-Implementierungen. Achten Sie beispielsweise unbedingt auf den ASP .NET Core HttpContext in Ihrem Controller-Code und verwenden Sie nicht den ASP .NET Non-Core HttpContext .

Wie in der vorherigen Architekturzeichnung gezeigt, sollten Sie in Ihrem Controllers-Code nur für die ASP .NET-Core-API verwenden, sogar Sie können auf die ASP .NET-ASP-ASN-Infrastruktur-API zugreifen.
Da ASP .NET Core 3.x nur auf der Laufzeit von .net Core 3.0 basiert (und nicht auf dem .NET Standard 2.0 wie zuvor mit dem ASP .NET Core 2.x), kann diese Bibliothek nicht zum Hosting ASP .NET Core 3.x-Web-API auf ASP .NET-Nicht-Core-Infrastruktur verwendet werden.
Derzeit kann posinformatique.aspnetcore.server.aspnet nur mit RAW -ASP .NET -Core -Infrastruktur und für die Implementierungen für Web -API -Controller arbeiten. Es ist nicht möglich, diese Bibliothek mit den MVC Razor Views zu verwenden, da das Visual Studio-Projekt den nicht-Core-Web-Compiler von ASP .NET verwendet.
Zögern Sie nicht, meinen Code zu klonen und einige Änderungen einzureichen ... Es ist ein Open -Source -Projekt, also ist jeder willkommen, diese Bibliothek zu verbessern ... Übrigens, ich bin französisch ... vielleicht werden Sie Bemerken, dass mein Englisch nicht wirklich fließend ist ... also zögern Sie nicht, meine Ressourcen -Strings oder meine Dokumentation zu beheben ... Merci!
Ich möchte dem Dilitrust Company bei der Prüfung danken, und gab mir ihr Feedback dieser Bibliothek für ihre ASP .NET WebForms -Anwendungen, die API im ASP .NET Core Web eingebettet haben.