web-dev-qa-db-ja.com

IISはASP.NET Coreサイトの実行に失敗します-HTTPエラー502.5

Windows 2012 R2マシンがあります。既存のASP.NET Coreサイトを実行し、公開されたASP.NET Coreサイトが機能していた。

ただし、変更を行ってから1か月後に本サイトに再度公開すると、サイトにアクセスできなくなり、ブラウザに次のエラーが表示されます

HTTPエラー502.5-プロセスエラー

詳細については、以下をご覧ください。 http://go.Microsoft.com/fwlink/?LinkID=808681

サーバーにログオンし、デプロイされたディレクトリでexeをクリックすると、コマンドプロンプトが開き、ポート5000でサイトが表示されます。 http:// localhost:50 でサイトにアクセスすると動作します完璧なので、問題はIISであり、サイト自体ではありません。

サーバーにログオンすると、Windows EventViewerで以下が表示されます。

enter image description here

物理ルート 'D:\ Sites\MySite \'のアプリケーション 'MACHINE/WEBROOT/APPHOST/DEFAULT WEB SITE/MySite'は、コマンドライン '"%LAUNCHER_PATH%"%LAUNCHER_ARGS%'、ErrorCode = '0x80070002:0でプロセスを開始できませんでした。

ブラウザのエラーメッセージのリンクにアクセスすると、.net Core Hostingバンドルを再インストールしたことが示されました。ただし、ブラウザのエラーメッセージは同じです。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore requestTimeout="02:00:00" processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
  </system.webServer>
</configuration>

アプリログフォルダーを見ると、このサイトにアクセスしようとするたびにサイズが0KBで内容が空であるたびにstdoutファイルが作成されます。

なぜIISは以前動作していた場所で突然動作を拒否しますが、コンパイルされたexeに直接アクセスするとアプリは動作しますか?

43
dev2go

問題はweb.configファイルの不良です。

<aspNetCore requestTimeout="02:00:00" 
     processPath="%LAUNCHER_PATH%" 
     arguments="%LAUNCHER_ARGS%" 
     stdoutLogEnabled="true" 
     stdoutLogFile=".\logs\stdout" 
     forwardWindowsAuthToken="false" />

パス%LAUNCHER_PATH%はシステムに存在せず、有効ではありません。次のようになります。

<aspNetCore requestTimeout="02:00:00" 
     processPath=".\yourAppName.exe" 
     arguments="somePossibleArgument" 
     stdoutLogEnabled="true" 
     stdoutLogFile=".\logs\stdout" 
     forwardWindowsAuthToken="false" />

アプリをコマンドラインから起動した場合、web.configファイルは完全に無視されることに注意してください。そのため、エラーは表示されません。

39

これと同じ問題がありました。私の問題はIISがドットネットへのパスを取得できませんでした。 dotnet.exeへのパスを指定することで修正できました

<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="C:\Program Files\dotnet\dotnet.exe" arguments=".\your-project.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"/>
  </system.webServer>
</configuration>
34
Akbar Badhusha

私の問題は、appsettings.jsonファイル内の無効なエスケープシーケンスが原因でプロセスが開始されないことでした。

Dotnetを使用して、公開されたASPNET Core 2 web api dllを実行しています。この問題は、コマンドプロンプトを開き、サイトファイルが存在するディレクトリに移動することで明らかになりました。そこに来たら、次のコマンドを実行しました。

dotnet mySite.dll

(mySite.dllをアプリのメインdllに変更します。また、.NET Core Windows Server Hostingバンドルの正しいバージョンが既にインストールされていることを確認してください。

Enterキーを押すと、すぐにクラッシュし、コンソールウィンドウに問題の正確なフィードバックが表示されました。これは、同様の問題が発生している場合に起動エラーを判断するのに役立つ素晴らしい方法です。

8
David Gunderson

同様の問題がありました。トラブルシューティングの手順に従ってください:Check the system event log for error messagesと、イベントビューアーからApplication 'MACHINE/WEBROOT/APPHOST/[MyFolder]' with physical root 'C:\inetpub\wwwroot\[MyFolder]\' failed to start process with commandline 'dotnet .\MyApp.dll', ErrorCode = '0x80004005 : 80008083.が見つかりました

次に、ターミナルからdotnet .\MyApp.dllを再実行し、答えを得ました。

It was not possible to find any compatible framework version
The specified framework 'Microsoft.AspNetCore.App', version '2.1.1' was not found.
  - Check application dependencies and target a framework version installed at:
      \
  - Alternatively, install the framework version '2.1.1'.

そのため、理由はjv_の回答と同じで、互換性のあるフレームワークバージョンがインストールされていません。結局、「自己完結型」展開モードを使用することになり、うまくいきました。

2
Weihui Guo

アプリケーションをデプロイしたときに、この同じ問題に遭遇しました。私の側にはいくつかの問題がありました:)

このページを非常に慎重に確認しました。 ASP.NET Core:IISへの公開

まず、 。NET Core Windows Server Hosting bundle のすべての部分がインストールされていませんでした。最終的には、自己完結型の展開ではなく、フレームワークに依存した展開を行いました。私たちにはたくさんのアプリがあり、それぞれが独自のバージョンの.netコアを必要としない/必要としません。ボックスには.netのバージョンが多すぎます。

また、管理者がサーバーの更新/アップグレードを実行した場合、ASP.NET Coreインストールをジャッキアップする可能性があることに注意してください( ASP.NET Core:IISへの公開 トラブルシューティングセクションを参照)

次に、web.configを修正する必要がありました...ここに私の公開されているweb.configがあります:* .exeとして公開したのではなく、*。dllをしました(引数値に注意してください)。また、私のprocessPathは「dotnet」に設定されています。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\DT.Web.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
  </system.webServer>
</configuration>

また、project.jsonオプションがすべてサーバー環境と互換性があるように設定してください( ASP.NET Core:IISへの公開 トラブルシューティングセクションを参照)

助けになる場合は、ここに私のproject.jsonのコピーを示します:

{
  "version": "2.0.1.0",

  "dependencies": {
    "DT.Common": "2.*",
    "DT.Configuration": "2.*",
    "DT.Services": "2.*",
    "DT.Web.ViewModels": "2.*",
    "Microsoft.ApplicationInsights.AspNetCore": "1.0.2",
    "Microsoft.AspNetCore.Authentication": "1.1.0",
    "Microsoft.AspNetCore.Authentication.Cookies": "1.1.0",
    "Microsoft.AspNetCore.Authentication.OpenIdConnect": "1.1.0",
    "Microsoft.AspNetCore.Diagnostics": "1.1.0",
    "Microsoft.AspNetCore.Mvc": "1.1.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.1.0-preview4-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Routing": "1.1.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": {
      "version": "1.1.0-preview4-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
    "Microsoft.AspNetCore.Server.Kestrel.Https": "1.1.0",
    "Microsoft.AspNetCore.Session": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.1.0",
    "Microsoft.Extensions.Caching.SqlServer": "1.0.0",
    "Microsoft.Extensions.Configuration.Abstractions": "1.1.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
    "Microsoft.Extensions.Configuration.Json": "1.1.0",
    "Microsoft.Extensions.Logging.Console": "1.1.0",
    "Microsoft.Extensions.Logging.Debug": "1.1.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.Graph": "1.1.1",
    "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.13.6"
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.1.0-preview4-final",
      "imports": "portable-net45+win8+dotnet5.6"
    },
    "Microsoft.Extensions.Caching.SqlConfig.Tools": "1.1.0-preview4-final"
  },

  "frameworks": {
    "netcoreapp1.1": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ],
      "dependencies": {
        "Microsoft.NETCore.App": {
          "version": "1.1.0",
          "type": "platform"
        }
      }
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "views/**/*.cshtml",
      "appsettings.json",
      "appsettings.*.json",
      "web.config"
    ]
  },

  "scripts": {
    "prepublish": [ "bower install", "gulp buildprod" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}
2
M.Ob

Visual Studioでweb.configファイルを変換し、processPathと引数を変更する場合にも同じ問題が発生しました。 Microsoftサイト で概説されているように、project.csprojファイルに除外を追加できます。

<PropertyGroup>
  <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>

これにより、パブリッシュのパス値が変更されるという問題が解決されましたが、デバッグ時にVisual Studioがそれを変更するという問題が引き続き発生します。

2

問題:ASPネットコアWeb APIをデプロイすると、processPathがdotnetに設定されます。アプリが起動せず、イベントビューアーに上記のエラーが表示されます。

解決:

プロファイルをロードするには、アプリケーションプールIDをセットアップする必要があります。

ナビゲート:アプリケーションプール-> NetCore(プール)->詳細設定->ユーザープロファイルの読み込み---->これをtrueに設定します

Falseに変更するとエラーが再作成され、trueに戻すと解決することを確認しました。

1
A P

私にとっての解決策は、.Net Core 2.2 SDKをインストールするだけで、うまくいきました。

https://dotnet.Microsoft.com/download

1
sojim2

私のプロジェクトは開発では問題なく機能していましたが、Webを本番環境にデプロイ/公開した後、502.5 Process Failureがスローされました。

その理由は、Microsoft.AspNetCore.All 2.0.5から2.0.6に更新したからです。バージョンを元に戻した後、正常に動作しました。

1
jv_

オンラインで見つかった可能性のあるすべての修正を試しましたが、何もうまくいきませんでした。問題が判明するまでは、プロジェクト名App WebAPI.dllにスペースが含まれていました。したがって、「dotnet。\ App WebAPI.dll」を実行しようとすると、「dotnet。\ App」を実際に実行しようとして、スペースの後の2番目の部分を忘れてしまうため、失敗します。ソリューション(プロジェクト名)の名前を変更してスペース(AppWebAPI)を削除すると、問題が修正されました。この修正により、問題を解決する時間を節約できることを願っています。

1
moussaleen

私は同じ問題に直面し、このスレッドからは何もうまくいきませんでした。そのため、Windowsイベントビューアーを調べたところ、EFコアDB移行を使用していたため、ユーザーがデータベースを作成/変更するための十分なアクセス許可を持っていなかったことがわかりました。認可を修正すると、この問題は解決しました。

したがって、アプリケーションイベントを確認することをお勧めします。エラーが発生した場合、そこでエラーの根本原因を特定できることを願っています。

0
Vikram Kumar

Web.configファイルと戦わずに、開発ディレクトリのIISから.Net CoreベースのAPIを実行できるようにしたかったのです。 Visual Studioは、プロジェクトプロファイル設定に基づいてweb.configを制御しています。 IISプロファイルをデバッグスタートに追加するだけで、VSがweb.configの処理方法を認識できるようになります。手順はこちらです:

https://docs.Microsoft.com/en-us/aspnet/core/Host-and-deploy/iis/development-time-iis-support?view=aspnetcore-2.2

これで、少しコーディングするだけで、ブラウザの起動を待たずに、またクエリ文字列を毎回失うことなく、ブラウザをコンパイルして更新できます。 [デバッグ]をクリックすると、デバッグのためにVSがIISに自動的にアタッチされます。これは、デバッガーをw3wpに手動でアタッチする必要がなくなることを意味します。パーフェクト!

参考までに、VSはweb.configを次のように動的に変更しています。

<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
  <environmentVariables />

しかし、私はこれをweb.configにハードコーディングせず、VSに管理させます。 :)

0
Nick Pirocanac

開発環境でVisual Studioを更新し、サーバーで.NetCoreランタイムを更新する必要がある以外は、同じ問題がありました。サーバーでランタイムを更新したら、もう一度行ってよかったです。

私はVS 2017の更新の私の経験が私の問題だったと思う;-)

0
Tim Maxey

私にとっては、しばらくして、問題がプロパティの1つに関連していることを理解しました

appsettings.json

ファイル。
Versionという名前のプロパティがあります。形式は次のとおりです。

"Version": "1.0.6",

サーバーでは、サポートチームはこの形式を考慮せず、次のようになりました。

"Version": 1.0.6,

およびIISは502.5エラーに直面しました。
アプリケーションイベントログが表示され、それが役に立ちました。

0
Mostafa Fallah

私が働いていたチームがこの問題を抱えていたとき、誰かがVisual Studioでプロジェクトをビルドし、binフォルダーを圧縮しました。

Msbuildタスクがweb.configファイルを正しくビルドするように、dotnet publishコマンドを実行する必要があります。 %LAUNCHER_PATH% "および"%LAUNCHER_ARGS%変数を置き換える必要があります。

0
McFrank