サーバー(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バイトであることを示します。
私は何をすべきか??ログに記録されていないときにエラーの原因を知る方法は?
だから私は新しいサーバーを手に入れた、今度はそれは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にインストールしようとしたところ、それらは正常にインストールされました。それがその背後にある理由かもしれませんが、それでも確かに言うことはできません。
実行して修正できました
"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をインストールした後、私は自分のアプリケーションを実行することができました。
私は同じ問題を抱えていましたが、私の場合は、アプリケーションプールのユーザーIDの許可が不十分でした IISへの公開 asp.netドキュメントのページ、このエラーにはいくつかの理由が記載されています:
buildOptions
of project.json
に設定していないことを確認してください。たとえば、x86のプラットフォームを指定せず、win81-x64(dotnet publish -c Release -r win81-x64
)のRIDで公開します。プロジェクトは警告やエラーなしで公開されますが、サーバーで上記の例外が記録されて失敗します。<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統合ミドルウェアを正しく参照したことを確認します。.UseUrls()
拡張メソッドを使用している場合は、.UseIISIntegration()
のWebHostBuilder()
拡張メソッドの前に配置されていることを確認してください。 .UseIISIntegration()
は、IISの背後でKestrelを実行し、その値を.UseUrls()
でオーバーライドしない場合、リバースプロキシのUrl
を設定する必要があります。私の場合、それは4番目の理由で、アプリプールを右クリックして変更し、プロセスモデルの詳細設定で、十分な権限を持つユーザーにIDを設定しました:
私はこれをIISのハードリセットで動作させました(私はホスティングパッケージをインストールしたばかりです)。
IIS Managerで「再起動」を押すだけでは不十分であることがわかりました。コマンドプロンプトを開き、「iisreset」と入力するだけです。
私は同じ問題を抱えていました。
その正確なソースを見つけるために、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をダウンロードした後、エラーがなくなりました。
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は正常に動作しました
同じ問題があり、すべての解決策がうまくいかなかった。この宝石を見つけて、それが他の誰かを助けるなら私が通り過ぎると思いました。 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パッケージを再インストールしてください。
_解決された_ /私は 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" />
そして、これは私の問題を解決し、それが助けを願っています。
私のVSプロジェクトが自動的に.NET Core 1.1.2にアップグレードされた後、私は本番サーバーでこの問題に遭遇しました。
ここから本番サーバーに1.1.2 .netコアランタイムをインストールしただけです: https://www.Microsoft.com/net/download/core#/runtime
開発用マシンをCore 1.0.1にアップデートしたときに同じ問題が発生しましたが、サーバーのアップデートを忘れていました。
私は同じような問題を抱えていたので、シャーロックホームズを引用すると、「不可能を排除したときは、たとえ不可能であっても、真実であるに違いない」
ターゲットとしている.NET Frameworkがサーバーにインストールされているかどうかを確認しましたが、インストールされていませんでした。私は4.6.2 .NET Frameworkをインストールし、それは働いた。
私の場合は、AspNetCore.2.0.6.RuntimePackageStore_x64.exe
とDotNetCore.2.0.6-WindowsHosting.exe
をインストールした後、502 =不正なゲートウェイとプロキシエラーが発生することなく動作するように restart server を実行する必要があります。
更新:
あなたは再起動せずにそれを使用することができる方法があります: https://stackoverflow.com/a/50808634/3634867
私は問題の同じエラーを抱えていましたが、VSG24の「提案された答え - CMDに「dotnet」と入力すると厄介なエラーメッセージが表示される」と同じ問題がありました。
Api-ms-win-crt-runtime-l1-1-0.dllが見つからないためプログラムを開始できません。
Windows Server 2012 R2 に必要な2つの更新プログラムを手動でインストールすることでこれを解決しました(および前提条件とその他すべての更新プログラムのリンク - MicrosoftのWebサイトでインストール手順をよくお読みください)。
- KB2919355
- KB2999226
これが誰かに役立つことを願っています。
デバッグ版のWebアプリケーションを公開しようとしたときにも同じ問題に直面しました。この一連のファイルには、属性processPath
の正しい値を持つファイルweb.config
が含まれていませんでした。
私はリリース版からこのファイルを取りました、値は私のexeファイルへのパスに割り当てられました。
<aspNetCore processPath=".\My.Web.App.exe" ... />
私はそれを物理ディレクトリにマッピングされたサイトのアプリケーションに "編集パーミッション"を追加することによって解決し、そしてこのルートフォルダへのアクセス権を持つことができるウィンドウズユーザーを選択しました。 (プライベートネットワーク)。
私は見つけた最新の.net Coreバージョンをインストールする必要がありました ここ 。サイトやサーバーを再起動する必要はありません
.NET Core 2.0 APIをAWS EBに公開しようとしているときにHTTPエラー502.5が発生し、次のコードを.csprojに追加して解決しました。
<PropertyGroup>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
私にとっては、.Net Coreの異なるバージョンがインストールされていることが原因でした。私は自分の開発者と本番サーバーを一致させ、それはうまくいった。
それを共有する私の場合、このエラーは私が project.json を更新するのを忘れたためです:
"buildOptions": {
"emitEntryPoint": true
}
コマンドプロンプトを開く 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
私は同じ問題を抱えていました。アプリケーションプールIDをネットワークサービスアカウントに変更しました。それから@danielyewrightが github コメントで言ったように、アプリケーションが正しく動作するようにweb.configでdotnet.exeへのパスを明示的に設定します。パスを設定した後に機能します。
ありがとう
私の場合は、サーバーにインストールされているNet Coreのバージョンに問題がありました。私は自分の開発マシンと同じバージョンをインストールするだけで、すべて問題ありません:-)
私もこの問題を抱えていました(エラーはVS 15と17の両方で発生しました)。しかしVS15ではCONNECTION_REFUSED
エラーを返し、VS17ではASP.NET Core 1.0 on IIS error 502.5
を返しました。
_修正_
プロジェクトディレクトリに移動して、隠しフォルダ.vs
を探します(プロジェクトフォルダdirにあります)。 (隠しファイル/フォルダを表示することを忘れないでください)
VSを閉じる
私は同じエラーを受けていました、そして問題が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 "(Get-Content '$(PublishDir)Web.config').replace(' -argFile IISExeLauncherArgs.txt', '') | Set-Content '$(PublishDir)Web.config'"" />
</Target>
これによりweb.configが変更され、問題のある公開部分が削除されます。
参照: https://github.com/aspnet/websdk/issues/242
それが役に立てば幸い。
これは私が考え出したものです、そしてこれはアップデートがインストールされた後に最近Windows 10で起こりました。私が集めたものから、私の "Project.dll"(asp.netコアプロジェクト)がウイルスのように振る舞うと仮定したWindows Defenderアップデートがインストールされたのでそれは削除された。
だから、私はあなたがものをインストール/アンインストールを始める前に私があなたが提案する最初のことの一つはあなたの "Project.dll"を確認することです。
もう存在しない場合は、その場所にコピーしてください。
あなたがあなたがファイルをコピーして戻すのに苦労しているならば、windows defenderであなたのプロジェクトフォルダーに除外を加えてください。 ( その方法についてはこちらをご覧ください )
これはすぐに私のために働きました、そして私はアプリケーションの複数のサーバーにわたってそれを繰り返しました。
私は同じ問題を抱えていて、私の場合の理由は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;"
}
}
私は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>
私にとっては、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();
なぜこれが私のために働いたのか私にはわかりませんが、私は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();