.net core sdk 2.2に付属する新機能を試していましたが、これはパフォーマンスを約400%向上させることを意図したものです。
印象的だったので、ABPプロジェクトで試してみました
Template asp.net core mvc 4.0.2.0
次をweb.mv.cproj
ファイルに追加しました
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
</ItemGroup>
残念ながら、このバージョンのABPフレームワークには互換性があるとは思いません。プロジェクトが単に実行に失敗してスローされるためです:(最終的に)
HTTPエラー500.30-ANCMインプロセス開始エラー
Web.configでstdoutLogEnabled="true"
を設定して再試行した後、ログを確認しましたが、エントリはありません。
プロセス設定でasp.netコアに対して現在のABPを実行することに成功した人はいますか?
これはABP vNextでしか利用できないものだと思っています。
Csprojのセクションを変更してみてください
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>
次へ...
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
<AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
</PropertyGroup>
https://github.com/dotnet/core/blob/master/release-notes/2.2/2.2-known-issues.md
.vsフォルダーを削除し、インプロセスホスティングモデルで再試行してください。
私の場合、私は最近、appstettings.jsonファイルのデータベース接続文字列を変更しました。ログを記録したり、エラーをキャッチしたりせずに、このエラーが発生して「HTTPエラー500.30-ANCMインプロセス開始エラー」エラーが発生したと思われます。
X-freestylerとTahir Khalidの間で、TahirがスタートアップでIOCの問題を示唆したのに気付いた。スタートアップは最近変更されていませんが、appstettings.jsonは変更されているため、appstettings.jsonの接続文字列が問題の原因であると判断しました。間違った接続文字列を修正し、問題は解決しました。コミュニティ全体に感謝します。
ASP.NET Core 2.2以降:インプロセスホスティングモデルを使用する64ビット(x64)自己完結型展開の場合、32ビット(x86)プロセスのアプリプールを無効にします。
IIS Managerの[アクション]サイドバー> [アプリケーションプール]で、[アプリケーションプールのデフォルトの設定]または[詳細設定]を選択します。 [32ビットアプリケーションを有効にする]を見つけて、値をFalseに設定します。
私の原因は、program.csのUseKestrel()にあります。2.2では.ConfigureKestrel()になります。
.csprojファイルのAspNetCoreHostingModel行を削除すると、うまくいきました。私の別のプロジェクトでは、うまく機能していたこのようなラインはありませんでした。
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>
質問と同じエラーメッセージを表示することから始まる別の問題を見つけました。ここで共有しているので、プロジェクトファイルを変更する前に、サービスが適切に登録されていることを確認できます。
また、.netcore 2.2を実行していますが、同じエラーメッセージが表示されていたため、選択した回答と同じようにプロジェクトファイルをInProcessからOutOfProcessに変更しました。その後、「実装タイプをインスタンス化できません」というメッセージを受け取ったときに、問題の本当の原因を見つけました。この原因は次のとおりでした。
services.AddScoped<IMyService, IMyService>();
の代わりに
services.AddScoped<IMyService, MyService>();
場合によっては、JSON設定ファイルの解析を破損して防止するだけのタイプミスでした
アプリケーションがクラッシュするため。この例外の時間を節約できる人!
また、エラーコードには、初期フェーズでファイルが見つからないために例外がスローされることが記載されています。環境設定セクションを参照してください。私のシナリオでは、次のコードを変更すると機能しました
var environment = whb.GetSetting("environment");
に
var environment = "Development";// whb.GetSetting("environment");
Appsettings.development.jsonがありますが、appsettings.production.jsonがないためです。正しい場所で別のものを探しているためにファイルが見つからない理由。
.Net Core 2.2では、InProcessホスティングモデルを使用できます。これは当然のことながら高速です。IISとアプリのKestrelサーバーの間にHTTPホップを追加することなく、すべてがIISで処理されます。このタグを追加することをお勧めします。AspNetCoreModuleV2新しいAspNetCoreModuleV2と古いAspNetCoreModuleオプションに注意してください。もう1つの重要なことは、Windowsアプリケーションイベントログを調べて、原因を特定することです。エラーメッセージはわかりにくいかもしれませんが、場合によっては、エラーの原因となったコード内の正確な行番号を指します。また、TFSでCI/CDを使用する場合、appsettings.jsonファイルに指定された値で適切に置き換えられなかった環境変数が存在する可能性があり、これは私にとって例外ソースの1つでした。
私にとっては、HostedServiceに誤ってDBContextが注入されました。私はこれに従って書き直しました:
DbContextインスタンスをIHostedServiceに注入する方法は?
すべてうまくいきました!
InProcessホスティングを使用してasp.netコアアプリケーションをIISでホストすることを決定するのに丸1日費やした後、この問題を解決できたことを誇りに思い、安心しました。問題を解決するために最善を尽くした同じフォーラム、ブログ、およびSOの質問を何度も繰り返したが、上記のすべてのアプローチに従った後も、私はまだ立ち往生していた。ここで、それを解決した経験を説明します。
ステップ1:IISでWebサイトを作成する
手順2:WebサイトのAppPoolの.Net CLRバージョンが「マネージコードなし」に設定され、AppPoolの「32ビットアプリケーションを有効にする」プロパティが設定されていることを確認->詳細設定がfalseに設定されている
ステップ3:プロジェクトが参照していることを確認する。Net core 2.2
ステップ4:ConfigureServicesメソッド内のstartup.csファイルに次の行を追加します
services.Configure<IISServerOptions>(options =>
{
options.AutomaticAuthentication = false;
});
ステップ6:次のNugetパッケージを追加します
Microsoft.AspNetCore.App v2.2.5以降
Microsoft.AspNetCore.Server.IIS v2.2.2以降
ステップ7:.csprojファイルに次の行を追加します
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
ステップ8:コードをビルドして公開する(できればx64 bitness)
ステップ9:etc/hostsファイルにWebサイトのホスト名を追加したことを確認します
ステップ10:World Wide Web発行サービスを再起動します
次に、asp.netコアアプリケーションをテストし、InProcessホスティングを使用してホストする必要がありますInProcessモードを使用してアプリがホストされているかどうかを確認するには、応答ヘッダーを確認し、次の行を含める必要があります
サーバー:Microsoft-IIS/10.0(IISのバージョンはシステム上で任意に変更できます)
Update:ダウンロードとインストール ASP.Net Core Hosting Bundle 動作に必要
この公開プロファイル設定は私のために修正されました:
公開プロファイルの構成->設定->サイト拡張オプション->