web-dev-qa-db-ja.com

ASP.NET Core 1.0 on IIS エラー502.5

サーバー(Windows 2012 R2)を以前の.Net Core 1.0 RTMから.Net Core 1.0 RC2 Windows Hosting packに更新しました。私のアプリは問題なく 私のPC で動作しますが、サーバーには表示され続けます。

HTTP Error 502.5 - Process Failure


Common causes of this issue:

The application process failed to start
The application process started but then stopped
The application process started but failed to listen on the configured port

以前はRC2バージョンで動作していました。何がうまくいかないのかわからない。

これはすべてイベントビューアが言うことです:

Failed to start process with the commandline 'dotnet .\MyWebApp.dll'. Error code = '0x80004005'.

最悪の部分は、アプリのログが空であることです - 空! / stdout_xxxxxxxxx.logファイルが完全に空で、サイズがすべて0バイトであることを示します。

私は何をすべきか??ログに記録されていないときにエラーの原因を知る方法は?

107
Vahid Amiri

だから私は新しいサーバーを手に入れた、今度はそれはWindows 2008 R2であり、私のアプリはうまく動く。

古いサーバーに問題があったのかどうか私にはわかりませんが、1つ考えがあります。

それで、私は以前に なし /でプラットフォームを念頭に置いてアプリをコンパイルしたので、ターゲットホストに.Net Core Windows Hostingパッケージがインストールされている場合にのみ機能するdllバージョンを私に与えました。私の場合は インストールされていてそれは問題ありません

アプリが動作しなくなった後、私はランタイムとしてwin7-x64を持つコンソールアプリとしてそれをコンパイルすることを決心しました。今度はサーバー上で私のアプリのexeを実行した瞬間、dllが見つからないというエラーでクラッシュしました。

The program can't start because api-ms-win-crt-runtime-l1-1-0.dll is missing

そのdllは/に含まれているユニバーサルCランタイムからのものです Visual C++再配布可能なVisual Studio 2015

私はそのパッケージ(x64とx86の両方)をインストールしようとしましたが、Windows Server 2012 R2では毎回失敗しました(理由はわかりません)。

しかし、それらを新しいサーバーであるWindows Server 2008 R2にインストールしようとしたところ、それらは正常にインストールされました。それがその背後にある理由かもしれませんが、それでも確かに言うことはできません。

9
Vahid Amiri

実行して修正できました

"C:¥Program Files¥dotnet¥dotnet.exe" "C:¥fullpath¥PROJECT.dll"

promptコマンドでは、もっと意味のあるエラーが表示されました。

「指定されたフレームワーク 'Microsoft.NETCore.App'、バージョン '1.0.1'が見つかりませんでした。 - アプリケーションの依存関係を確認し、C:\ Program Files\dotnet\shared\Microsoft.NETCore.Appにインストールされているフレームワークバージョンを対象にしてください。以下のバージョンがインストールされています:1.0.0 - あるいは、フレームワークバージョン '1.0.1'をインストールしてください。

ご覧のとおり、私のサーバーには間違ったバージョンのNET Coreがインストールされています。以前のバージョン1.0.0をアンインストールし、正しいバージョン1.0.1をインストールした後、私は自分のアプリケーションを実行することができました。

107
hatsrumandcode

私は同じ問題を抱えていましたが、私の場合は、アプリケーションプールのユーザーIDの許可が不十分でした IISへの公開 asp.netドキュメントのページ、このエラーにはいくつかの理由が記載されています:

  • 自己完結型のアプリケーションを公開した場合、公開するRIDと競合するプラットフォームをbuildOptions of project.jsonに設定していないことを確認してください。たとえば、x86のプラットフォームを指定せず、win81-x64(dotnet publish -c Release -r win81-x64)のRIDで公開します。プロジェクトは警告やエラーなしで公開されますが、サーバーで上記の例外が記録されて失敗します。
  • Web.configの<aspNetCore>要素のprocessPath属性をチェックして、ポータブルアプリケーションの場合はdotnetであるか、内蔵アプリケーションの場合は。\ my_application.exeであることを確認します。
  • ポータブルアプリケーションの場合、dotnet.exeはPATH設定を介してアクセスできない場合があります。システムPATH設定にC:\Program Files\dotnet\が存在することを確認します。
  • ポータブルアプリケーションの場合、dotnet.exeは、アプリケーションプールのユーザーIDでアクセスできない場合があります。 AppPoolユーザーIDがC:\Program Files\dotnetディレクトリにアクセスできることを確認します。
  • アプリケーションの.UseIISIntegration()WebHostBuilder()メソッドを呼び出して、IIS統合ミドルウェアを正しく参照したことを確認します。
  • Kestrelでセルフホスティングするときに.UseUrls()拡張メソッドを使用している場合は、.UseIISIntegration()WebHostBuilder()拡張メソッドの前に配置されていることを確認してください。 .UseIISIntegration()は、IISの背後でKestrelを実行し、その値を.UseUrls()でオーバーライドしない場合、リバースプロキシのUrlを設定する必要があります。

私の場合、それは4番目の理由で、アプリプールを右クリックして変更し、プロセスモデルの詳細設定で、十分な権限を持つユーザーにIDを設定しました: user identity of my Application Pool

66
Hamid Mosalla

私はこれをIISのハードリセットで動作させました(私はホスティングパッケージをインストールしたばかりです)。

IIS Managerで「再起動」を押すだけでは不十分であることがわかりました。コマンドプロンプトを開き、「iisreset」と入力するだけです。

60
michael_hook

私は同じ問題を抱えていました。

その正確なソースを見つけるために、web.configファイルにログインするようにしました。

<aspNetCore processPath="dotnet" arguments=".\MyWebService.dll" stdoutLogEnabled="**true**" stdoutLogFile=".\logs\stdout" />

myWebServiceルートフォルダにlogsサブフォルダを作成しました。

IISを再起動してAPIを実行しようとするとエラーが発生し、適切なCore Runtimeが見つかりませんでした。インストールDotNetCore.1.0.5_1.1.2-Windowsをダウンロードした後、エラーがなくなりました。

4

Webアプリの公開時にも同じ問題がありました。まだ誰かがこの問題を抱えているならば {AppName} .runtimeconfig.json を変更することによってそれを直しました

    {
  "runtimeOptions": {
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "1.1.2"
    },
    "configProperties": {
      "System.GC.Server": true
    }
  }
}

バージョンを "version": "1.1.2" から "version": "1.1.1" に変更すると、everythignは正常に動作しました

4
npo

同じ問題があり、すべての解決策がうまくいかなかった。この宝石を見つけて、それが他の誰かを助けるなら私が通り過ぎると思いました。 Server 2012 R2にインストールしてDLL missingエラーが表示されたら、VS C++ 2015を再インストールしてください。修正するには、次のようにします。

C:\ProgramData\Package Cache\...\packages\Patch\x64\Windows8.1-KB2999226-x64.msuファイルに問題がインストールされているようです。管理コマンドを開くプロンプト

c:
mkdir tmp
mkdir tmp\tmp
move "C:\ProgramData\Package Cache\...\packages\Patch\x64\Windows8.1-KB2999226-x64.msu" c:\tmp
expand -F:* c:\tmp\Windows8.1-KB2999226-x64.msu c:\tmp\tmp
dism /online /add-package /packagepath:c:\tmp\tmp\Windows8.1-KB2999226-x64.cab

注: "..."を正しいフォルダ名に置き換えてください。この後、VS C++ 2015パッケージを再インストールしてください。

3
Lee Harris

_解決された_ /私は Azure に展開している間に今日同じ問題を経験しました。それから私はローカルIISのために同じことを試みた、同じ問題を得た。私は.net COREを使い始めたばかりなので、実際に解決する数時間前に苦労しました。

私たちのソリューションでは、IISに公開した後、web.confileファイルを確認しました。特に<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" />行の下にあります。

私たちの展開フォルダーでは、生成されたweb.configは以下のようになります。<aspNetCore processPath="dotnet" arguments=".\Yodlee.dll -argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

ビジュアルスタジオソリューションで上記の設定を <aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" forwardWindowsAuthToken="false" stdoutLogEnabled="false" />に変更してみてください。

新しい展開フォルダでは、生成されたweb.configは次のようになります。 <aspNetCore processPath="dotnet" arguments=".\Yodlee.dll" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

そして、これは私の問題を解決し、それが助けを願っています。

3
Agni

私のVSプロジェクトが自動的に.NET Core 1.1.2にアップグレードされた後、私は本番サーバーでこの問題に遭遇しました。

ここから本番サーバーに1.1.2 .netコアランタイムをインストールしただけです: https://www.Microsoft.com/net/download/core#/runtime

3
Rikard Askelöf

開発用マシンをCore 1.0.1にアップデートしたときに同じ問題が発生しましたが、サーバーのアップデートを忘れていました。

2
Alex Dresko

私は同じような問題を抱えていたので、シャーロックホームズを引用すると、「不可能を排除したときは、たとえ不可能であっても、真実であるに違いない

ターゲットとしている.NET Frameworkがサーバーにインストールされているかどうかを確認しましたが、インストールされていませんでした。私は4.6.2 .NET Frameworkをインストールし、それは働いた。

2
TheDoctor05

私の場合は、AspNetCore.2.0.6.RuntimePackageStore_x64.exeDotNetCore.2.0.6-WindowsHosting.exeをインストールした後、502 =不正なゲートウェイとプロキシエラーが発生することなく動作するように restart server を実行する必要があります。

更新:

あなたは再起動せずにそれを使用することができる方法があります: https://stackoverflow.com/a/50808634/3634867

1
John_J

私は問題の同じエラーを抱えていましたが、VSG24の「提案された答え - CMDに「dotnet」と入力すると厄介なエラーメッセージが表示される」と同じ問題がありました。

Api-ms-win-crt-runtime-l1-1-0.dllが見つからないためプログラムを開始できません。

Windows Server 2012 R2 に必要な2つの更新プログラムを手動でインストールすることでこれを解決しました(および前提条件とその他すべての更新プログラムのリンク - MicrosoftのWebサイトでインストール手順をよくお読みください)。

  1. KB2919355
  2. KB2999226

これが誰かに役立つことを願っています。

1
Johan Foley

デバッグ版のWebアプリケーションを公開しようとしたときにも同じ問題に直面しました。この一連のファイルには、属性processPathの正しい値を持つファイルweb.configが含まれていませんでした。

私はリリース版からこのファイルを取りました、値は私のexeファイルへのパスに割り当てられました。

<aspNetCore processPath=".\My.Web.App.exe" ... />
1
Barabas

私はそれを物理ディレクトリにマッピングされたサイトのアプリケーションに "編集パーミッション"を追加することによって解決し、そしてこのルートフォルダへのアクセス権を持つことができるウィンドウズユーザーを選択しました。 (プライベートネットワーク)。

1
Antonin GAVREL

私は見つけた最新の.net Coreバージョンをインストールする必要がありました ここ 。サイトやサーバーを再起動する必要はありません

.NET Core 2.0 APIをAWS EBに公開しようとしているときにHTTPエラー502.5が発生し、次のコードを.csprojに追加して解決しました。

  <PropertyGroup>
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
  </PropertyGroup>
1
Matheus Lacerda

私にとっては、.Net Coreの異なるバージョンがインストールされていることが原因でした。私は自分の開発者と本番サーバーを一致させ、それはうまくいった。

1
Carla

それを共有する私の場合、このエラーは私が project.json を更新するのを忘れたためです:

"buildOptions": {
    "emitEntryPoint": true
  }
1
vinjenzo

コマンドプロンプトを開く with Administrator credentials

次のコマンドを入力してEnterキーを押してください

> _ iisreset _

OR

Open Visual Studio 2017 with Administrator credentials

Package Manager Console に次のコマンドを入力し、enterキーを押します。

_ pm _ > _ iisreset _

PM> IISRESET
Attempting stop...
Internet services successfully stopped
Attempting start...
Internet services successfully restarted
1
Akshay Mishra

私は同じ問題を抱えていました。アプリケーションプールIDをネットワークサービスアカウントに変更しました。それから@danielyewrightが github コメントで言ったように、アプリケーションが正しく動作するようにweb.configでdotnet.exeへのパスを明示的に設定します。パスを設定した後に機能します。

ありがとう

1
vik

私の場合は、サーバーにインストールされているNet Coreのバージョンに問題がありました。私は自分の開発マシンと同じバージョンをインストールするだけで、すべて問題ありません:-)

1
SaltFish

私もこの問題を抱えていました(エラーはVS 15と17の両方で発生しました)。しかしVS15ではCONNECTION_REFUSEDエラーを返し、VS17ではASP.NET Core 1.0 on IIS error 502.5を返しました。

_修正_

  1. プロジェクトディレクトリに移動して、隠しフォルダ.vsを探します(プロジェクトフォルダdirにあります)。 (隠しファイル/フォルダを表示することを忘れないでください)

  2. VSを閉じる

  3. .vs-folderを削除します。
  4. 管理者としてVSを起動します(.vs-folderはVSによって再作成されます)。
0
Unicco

プロファイルオプションをこれに変更しました、それは働いています!

enter image description here

たぶん、あなたはこの2つのオプションを変えるべきです:

  1. 展開モード
  2. ターゲットランタイム
0
hosein dafeyan

私は同じエラーを受けていました、そして問題がAzureへの公開の間に、私の web.config ファイルが修正されたのでこの次の行がこのように終わったということであることを発見

<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" startupTimeLimit="3600" requestTimeout="23:00:00" />

Productionの問題は引数の内容です。 "-argFile IISExeLauncherArgs.txt"

この問題は次回の.NET Core SDK(現在プレビュー版)で修正される予定ですが、現時点での回避策はこのブロックを.csprojファイルに追加することです。

<Target Name="bug_242_workaround" AfterTargets="_TransformWebConfig">
    <Exec Command="powershell &quot;(Get-Content '$(PublishDir)Web.config').replace(' -argFile IISExeLauncherArgs.txt', '') | Set-Content '$(PublishDir)Web.config'&quot;" />
  </Target>

これによりweb.configが変更され、問題のある公開部分が削除されます。

参照: https://github.com/aspnet/websdk/issues/242

それが役に立てば幸い。

0
Rodrigo Pires

これは私が考え出したものです、そしてこれはアップデートがインストールされた後に最近Windows 10で起こりました。私が集めたものから、私の "Project.dll"(asp.netコアプロジェクト)がウイルスのように振る舞うと仮定したWindows Defenderアップデートがインストールされたのでそれは削除された。

だから、私はあなたがものをインストール/アンインストールを始める前に私があなたが提案する最初のことの一つはあなたの "Project.dll"を確認することです。

もう存在しない場合は、その場所にコピーしてください。

あなたがあなたがファイルをコピーして戻すのに苦労しているならば、windows defenderであなたのプロジェクトフォルダーに除外を加えてください。 ( その方法についてはこちらをご覧ください

これはすぐに私のために働きました、そして私はアプリケーションの複数のサーバーにわたってそれを繰り返しました。

0
Seun S. Lawal

私は同じ問題を抱えていて、私の場合の理由はEFコアがappsettings.development.jsonファイルから接続文字列を読み込もうとしていたということでした。それを開くと、接続文字列がコメントされていることがわかりました。

//{
//  "ConnectionStrings": {
//    "DefaultConnection": "Server=vaio;Database=Goldentaurus;Trusted_Connection=True;",
//    "IdentityConnection": "Server=vaio;Database=GTIdentity;Trusted_Connection=True;"
//  }
//}

それから私はそれらを以下のようにコミットしないで問題を解決しました:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=vaio;Database=Goldentaurus;Trusted_Connection=True;",
    "IdentityConnection": "Server=vaio;Database=GTIdentity;Trusted_Connection=True;"
  }
}
0
yogihosting

私は64ビットWindowsサーバー上のIISで32ビットasp.netコアアプリケーションを実行しようとすることによって引き起こされた同様の問題(Asp.Net Core 2.x)を持っていました。根本的な原因は、自動生成されたweb.config(プロジェクトに明示的に含まれていない、asp.netのコアプロジェクトにデフォルトでは含まれていない場合)に、dotnet実行可能ファイルへのフルパスが含まれていないことです。ホスティングバンドルを64ビットマシンにインストールすると、64および32ビットバージョンのdotnetがインストールされますが、パスはデフォルトで64ビットに解決され、32ビットasp.netコアアプリケーションはロードに失敗します。ブラウザに502.5エラーが表示され、サーバーイベントログを見るとエラーコード0x80004005が表示される場合があります。あなたのasp.netコアアプリケーションdllをそのサーバにロードするためのコマンドプロンプトからdotnet.exeを実行しようとすると、 "BadImageFormatException"や "間違ったフォーマットでプログラムをロードしようとした"のようなエラーを見るかもしれません。私にとってうまくいった修正は私のプロジェクト(そして展開)にweb.configを追加することであり、そのweb.configでdotnet.exeの32ビットバージョンへのフルパスを設定しました。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <location path="." inheritInChildApplications="false">
        <system.webServer>
            <handlers>
                <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
            </handlers>
            <aspNetCore processPath="C:\Program Files (x86)\dotnet\dotnet.exe" arguments=".\My32BitAspNetCoreApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
       </system.webServer>
   </location>
</configuration>
0
Nathan

私にとっては、Startup.csのconnectionStringが次のようにnullであることが原因でした。

services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

アプリケーションが接続文字列についてappsettings.jsonを調べていなかったため、nullでした。

Program.csをに変更しなければなりませんでした:

public static void Main(string[] args)
{
    BuildWebHost(args).Run();
}

public static IWebHost BuildWebHost(string[] args) =>
     WebHost.CreateDefaultBuilder(args)
     .ConfigureAppConfiguration((context, builder) => builder.SetBasePath(context.HostingEnvironment.ContentRootPath)
     .AddJsonFile("appsettings.json").Build())
     .UseStartup<Startup>().Build();
0
Andrei Dobrin

なぜこれが私のために働いたのか私にはわかりませんが、私はWindows認証を使用しています、そして私はProgram.csの私のBuildWebHostに次のコードのビットを持っていました:

.UseStartup<Startup>()
.UseHttpSys(options =>
{
    options.Authentication.Schemes =
        AuthenticationSchemes.NTLM | AuthenticationSchemes.Negotiate;
    options.Authentication.AllowAnonymous = false;
})
.Build();

.UserHttpSysビットを削除した後、それは今動作し、そして私はまだドメインユーザーとして認証することができます。

BuildWebHostは次のようになります

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .Build();
0
Bassie

公開設定を変更した後私のために働きました。

enter image description here

0
MAFAIZ