posinformatique.aspnetcore.server.aspnetは、.NETフレームワークに基づいたASP .NET非コア(WebFormsおよびMVC)インフラストラクチャのASP .NETコアWeb APIをホストするライブラリです。


posinformatique.aspnetcore.server.aspnetは、ASP .NET非コアインフラストラクチャの構成されたルートに応じて実行されるASP .NET非コアIHttpHandlerです。 posinformatique.aspnetcore.server.aspnet IHttpHandler内部実装が呼び出されると、HTTPクエリは、専用のIIS、コンソール、またはケストレルホストでホストされた場合、同じ動作でクエリを実行するASP .NETコアインフラストラクチャに送信されます。
posinformatique.aspnetcore.server.aspnetは、Nuget公式Webサイトで直接入手できます。次のNugetコマンドラインを使用して、ライブラリをVisual Studioプロジェクトにダウンロードしてインストールするには
Install-Package PosInformatique.AspNetCore.Server.AspNet
新しいASP .NET Webフォーム/MVC非コアプロジェクトで、次のNUGETコマンドを使用してASP .NET Core 2.Xインフラストラクチャをインストールします。
Install-Package Microsoft.AspNetCore
Install-Package Microsoft.AspNetCore.Mvc
HttpApplicationクラスのApplication_Startの内部にあるASP .NET WebFormsまたはMVC Non-Coreプロジェクトにposinformatique.aspnetcore.server.aspnetパッケージを追加した後、ASP .NET Core IWebHostインスタンスを開始し、クラシックWebHost.CreateDefaultBuilder()および関連アピ( Startup Class(StartingUpi(Starting))を使用して開始します。代わりに、ASP .NETコアアプリケーションをホストするためにKestrelまたはIISを選択するには、 UseAspNet()メソッドを呼び出して、ASP .NET非コアインフラストラクチャでASP .NETコアアプリケーションをホストします。
UseAspNet() ASP .NET非コアではなく、ASP .NETコアインフラストラクチャによってインターセプトされ、処理されるベースルートを定義する必要があります。
これは、 Global.asax.csコードの構築、ASP .NETコアアプリケーションを起動し、ASP .NETコアアプリケーションへの/apiおよび/swagger URLによるすべてのリクエストをリダイレクトする例です。
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 ( ) ;
}
}追加のサービスを登録することにより、 Startupクラスで通常どおりASP .NETコアアプリケーションを構成できます。これは、Swagger UIを使用してドキュメントを追加するために、ASP .NETコアMVCインフラストラクチャとswashbuckle.aspnetcore拡張機能を登録するStartupクラスの例です。
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" ) ;
} ) ;
}
} コントローラーの実装内のASP .NETコアのコンポーネントとサービスのみを使用する必要があります。コントローラーの実装からASP .NET非コアのコンポーネントまたはサービスへのアクセスを避けてください。たとえば、コントローラーコード内のASP .NETコアHttpContextにアクセスしてください。ASP.NET非コアHttpContext使用しないでください。

以前のアーキテクチャ図面に示されているように、コントローラーコードでは、ASP .NET非コアインフラストラクチャAPIにアクセスできることも、ASP .NETコアAPIにのみ使用する必要があります。
ASP .NET Core 3.Xは.NET Core 3.0ランタイムのみに基づいているため(ASP .NET Core 2.xとの以前のように.NET標準2.0ではありません)、このライブラリはASP .NET非コアインフラストラクチャのASP .NET Core 3.x Web APIをホストすることはできません。
現在、 posinformatique.aspnetcore.server.aspnetは、Raw ASP .NETコアインフラストラクチャとWeb APIコントローラーの実装でのみ動作できます。 Visual StudioプロジェクトはASP .NET非コアWebコンパイラを使用しているため、MVC Razorビューでこのライブラリを使用することはできません。
私のコードをクローンしていくつかの変更を送信することを躊躇しないでください...それはオープンソースプロジェクトです。だから誰もがこのライブラリを改善することを歓迎します...私はフランス語です...だから私の英語は本当に流fluentではないことを発言するでしょう...だから私のリソースの文字列や私のドキュメントを修正することを躊躇しないでください...メルミ!
Dilitrust Companyに感謝し、ASP .NET Core Webで開発されたAPIを組み込んだASP .NET WebFormsアプリケーションについて、このライブラリのフィードバックを提供してくれました。