0

多くの PC でテストされた ASP.NET Core Web API を作成しましたが、クライアントの IIS サーバーに展開すると、アプリケーション イベント ログで確認したように、アプリケーションが起動しないか、エラーが発生しません。実行可能ファイルを直接実行すると、アプリケーションが動作し、ASP.NET Core Web サイトを参照できます。実行する dll を見つけるために、web.config ファイルに移動しました。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\MY_API.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: c1c1b8d5-abcd-479f-9e7a-abcdefghijkl-->

実行dotnet MY_API.dllすると、次のものが生成されます。

Kestrel [0] を開始できませんアクセス許可によって禁止されている方法でソケットにアクセスしようとしました

実行可能ファイルを実行すると、ポートに正常にバインドされ、localhost:port に移動でき、api swagger インターフェイスが表示されるため、ポートは他のアプリケーションにバインドされていません。このdotnetコマンドは、開発用 PC でアプリケーションを正常に実行します。

開発用 PC で実行しているモジュールと同じモジュールが IIS で実行されていることと、開発用 PC にインストールされているものと同じ .net ランタイム ホスティング バンドルがサーバーにインストールされていることを確認できます。これは単なるアクセス許可の問題だと思います。セキュリティ ポリシーにより、dotnetIIS がバックグラウンドでアプリケーションを起動するために使用するコマンドを使用してポートをバインドできない可能性があります。

サービス アカウントと ApplicationPoolIdentities に関する私の知識は非常に限られています。アプリケーションがdotnetコマンドを使用してポートをバインドできないようにする許可は何ですか?実行可能ファイルを実行すると、ポートにバインドできますか? これらの権限を変更するにはどうすればよいですか?

4

0 に答える 0