IISでASP.NETCore3.1サイトを起動する[複製]
IIS(v10)でASP.NET Core3.1を期待どおりに起動できませんでした。通常のようにサイトにフォルダーに公開しますが、Windows Server 2019 VM内からhttp:// localhost:80またはhttps:// localhost:443(両方にIISサイトがバインドされている)にアクセスしてテストすると、 500.19の応答があります。しかし、コマンドラインから入力するdotnet MyWebApp.dll
と、サイトはhttps:// localhost:5001 /に表示されます。
どうしたの?ポート80がIISでバインドされているのに、ポート80が自動的に機能しないのはなぜですか?
ファイルをコピーしてIISを使用するだけでこれを機能させるためのトリックはありますか、それともコマンドラインを使用して.NET Core 3.1サイトを起動する必要がありますか?
回答
次のことを行ったことを確認してください。
- 最新のコアホスティングバンドルをインストールしました。そうでない場合は、ここに移動して「ホスティングバンドル」を探してくださいhttps://dotnet.microsoft.com/download/dotnet-core/3.1 (定期的にそこに行く必要があります。これを書くときは、ほぼ毎月新しいバージョンが3.1.7です)
- アプリプールで、.NETFrameworkが選択されていないことを確認します
公開するときは、
Deployment Mode = Framework-Dependent
Target Runtime = win-x64
プロファイルを保存した後、公開プロファイル(このファイルはプロジェクトフォルダー/Properties/PublishProfiles/YourProfileName.pubxmlにあります)で、次のものが必要になります。
<EnvironmentName>Production</EnvironmentName>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
IISを使用する場合、InProcessが最速のオプションです。公開を実行すると、これは次のように生成されたweb.configになります。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\YourWebApp.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</configuration>
ステージングサーバーにデプロイする場合は、新しい公開プロファイルを作成して、
<EnvironmentName>Staging</EnvironmentName>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
https:// localhost:5001 /から回答を得ると、IISではなくKestrelを実行しています
Asp.net CoreWebホスティングバンドルのインストールを見逃したようです。Asp.netコアは、Visual Studio IIS Expressで実行できる場合でも、デフォルトではIISでサポートされていません。さらに、asp.netコアWebホスティングバンドルをインストールしても、IISはAspNetCoreハンドラーを登録しません。
したがって、ハンドラーとasp.netコアモジュールがweb.configに登録されていることを確認してください
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\MyWebApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
もちろん、VSWebデプロイメントツールを使用してアプリケーションを公開できます。プロジェクトを公開すると、これらの構成が登録されます。
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.1