IISでASP.NETCore3.1サイトを起動する[複製]

Aug 17 2020

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サイトを起動する必要がありますか?

回答

1 RoarS. Aug 18 2020 at 09:57

次のことを行ったことを確認してください。

  • 最新のコアホスティングバンドルをインストールしました。そうでない場合は、ここに移動して「ホスティングバンドル」を探してください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を実行しています

JokiesDing Aug 18 2020 at 06:30

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