バージョン6以前のForguncy Serverは.NET Frameworkを使用して動作していましたが、Forguncy 8 Server以降ベースとなるフレームワークをASP.NET Coreに移行しました。そのためバージョン6以前に作成したカスタムWeb APIとは互換性がありません。次の手順に従い、カスタムWeb APIを移行する必要があります。
ForguncyApiクラスのContextプロパティを使用していないカスタムWeb APIの場合、プログラムコードの書き換え作業は不要です。
プロジェクトの[プロパティ]を開き、[対象のフレームワーク]が「.NET Framework 4.7.2」であることを確認します。
対象のフレームワークは「.NET Framework 4.7.2」に設定します。対象のフレームワークに「.NET Framework 4.7.2」を選択できるVisual Studioであれば、使用するVisual Studioはどのバージョンでも構いません。フレームワークは「.NET 6.0」ではないことに注意してください。ただし、必ず.NET StandardのAPIセットのみを使用するようにし、.NET Frameworkにのみ存在するAPIは使用しないようにしてください。.NET Standardに含まれるAPIであるかどうかについては、マイクロソフト社のドキュメントを確認してください。
プロジェクトの参照から「GrapeCity.Forguncy.ServerApi.dll」、および「Microsoft.Owin.dll」ファイルを外し、Forguncy Builderのインストールフォルダに含まれる以下のDLLファイルを参照設定に追加します。
<Forguncy Builderのインストールフォルダー>¥Website¥bin¥GrapeCity.Forguncy.ServerApi.dll
ソリューションエクスプローラーでプロジェクトを選択して右クリックし、表示されるコンテキストメニューで[NuGetパッケージの管理(N)...]を選択します。
[NuGetパッケージマネージャー]で「Microsoft.AspNetCore.Http.Abstractions」を検索し、インストールします。
WriteAsyncのメソッドを使用するために「using Microsoft.AspNetCore.Http」を追加する必要があります。対象のカスタムWeb APIに次のメソッドが使用されている場合、それらを置き換える必要があります。
機能 | 書き換え前 | 書き換え後 |
レスポンスの書き込み | Context.Response.Write(result) | Context.Response.WriteAsync(result).Wait() |
リクエストの読み込み | new StreamReader(base.Context.Request.Body).ReadToEnd() | new StreamReader(base.Context.Request.Body).ReadToEndAsync().Result |
リクエストのユーザー | this.Context.Request.User | this.Context.User |
上記の置き換え後のコードは、移行対象との互換性を考慮して同期処理となるコード例を示していますが、一般的に同時アクセス数が多い場合には同期処理よりも非同期処理のほうがパフォーマンスが優れています。
同期処理の場合の記載例 | 非同期の場合の記載例 |
[Get] public void TestApi2() { this.Context.Response.WriteAsync().Wait() } |
[Get] public async Task TestApi2() { await this.Context.Response.WriteAsync(); } |
Visual Studioでビルドを行いDLLファイルを作成します。
Forguncy Builderを起動し、[ファイル]リボンタブ - [オプション] - [カスタムWeb API]を選択し、[Web API DLLファイルのアップロード]を押して作成したDLLファイルを選択します。
作成したDLLファイルに問題がなく、必要参照ファイルがアップロードされていれば、使用できるWeb APIの一覧が表示されます。