web-dev-qa-db-ja.com

IISにデプロイされたasp.netコアアプリが500内部サーバーエラーを満たしている

:(エラー:500 Internal Server Errorアプリケーションの起動中にエラーが発生しました。

このメッセージは、asp.netコアアプリにデータベース機能を追加し、iisに展開したときに出てきました。 Visual Studioで開発したとき、すべてがうまくいきました。しかし、展開後、このエラーメッセージが表示されました。

dotnet myapp.dllを使用してdeployフォルダーでアプリを実行しようとしましたが、うまく機能することがわかりました。問題はiisとの関係である可能性があります。 <compilation debug="true">..</compilation>をweb.configに追加しようとしましたが、役に立たないようです。実際に問題とは何ですか、または詳細なエラー情報を表示して、何が起こったのかを知るのに役立つ他の方法はありますか?

32
yitian
  1. StdoutLogEnabled = "false"をtrueに変更し、stdoutLogFile = "。\ logs\stdout"のログを確認します。そこのエラーが何かを伝えるかもしれません。

  2. ASPNETCORE_ENVIRONMENT 環境変数を使用して正しい環境名を設定したことを確認してください。接続文字列などの正しい設定を使用してください。デフォルトでは、マシンには「開発」環境があります。

  3. エラー処理ミドルウェア を使用して、次のような例外を表示できます。

    app.UseDeveloperExceptionPage();
    
41
Set

同じ問題がありました。 私を助けたガイド です。 「ランタイム」をWebサーバーにインストールするのではなく、必要なすべてのファイルをスタンドアロンアプリとしてデプロイすることに注意してください。以下は、より簡略化された形式の手順です。

  1. ローカルPCで、サーバーに基づいて公開するバージョンを決定します。 Windows Server 2008、R2をターゲットにしていたため、win7-x64を公開する必要がありました。プロジェクトディレクトリでコマンドプロンプトを開き、以下のコマンドを実行します。

    dotnet publish -c release -r win7-x64

    これにより、bin\Release\netcoreapp2.0\publishにある数百のDLL、.exe、およびweb.configを含む発行フォルダーが作成されます。

  2. IISを使用するWebサーバーで、 このランディングページ に移動します。目的のバージョンのリンクをクリックします。 Runtime and Hosting Bundleのリンクを見つけます。クリックしてダウンロードして実行します。

  3. 昇格したコマンドプロンプトからこれを実行して、IISを再起動します。

    net stop was

    net start w3svc

  4. ローカル発行フォルダー内のすべてのファイルを、IISサーバー上の目的のアプリケーションフォルダーにコピーします。

  5. サーバーでIISを開き、通常のように個別のAppPoolとアプリケーションを作成します。 AppPoolの[基本設定]で、.NET FrameworkバージョンをNo Managed Codeに変更します。 IISのアプリケーションが目的のフォルダーと適切なAppPoolを指していることを確認してください。

  6. ブラウザでWebアプリケーションをテストします。

10
James Lawruk

以下のMark333のコメントは私の問題を解決しました。

読みやすくするための引用:

「私はVisual Studioが提供する通常のパブリッシュを使用しています。そして、最新バージョンのHosting Bundleを使用すると問題が解決することがわかりました。このMicrosoft.com/net/download/dotnet-core/runtime-2.1の+1 .0-rc1 "

アプリが少し古いため、1.1をインストールする必要がありましたが、Hosting Bundleが修正しました。私の場合、公式環境のDockerイメージにデプロイしますが、ローカルでテストを行いたい場合は、それを公開し、ローカルIISにサービスを提供します。

5
Matthew Allen

私の場合、私はそれを実行しているWindowsサーバーに最新の「DotNetCore.2.0.0-WindowsHosting.exe」を実際にインストールしていなかったため...サーバーでエラー5が発生します。

また、アップグレードに関する問題を修正するのは簡単ではありませんでした...可能な場合は、回避することをお勧めします。

5
mrdavenz
3
Diego Venâncio

同じ問題がありました。

私の問題は、dbへの接続文字列がappsettings.production.jsonで設定されていないことでした

また、内部サーバーエラー500はエラーメッセージを曖昧にするためのものでした。

StdoutLogEnabled = trueを変更しても何も起こらなかったため、エラーに関する情報は表示されませんでした。

2
Dongolo Jeno

DotNetCore.2.0.5-WindowsHosting.exeをWindows 2008 R2 Standardマシンにインストールしましたが、同じhttp 500エラーが発生しました。ロギングは役に立ちませんでした(空白のログが生成されました-イベントビューアーのログは一般的なErrorCode = 0x80070002

私は問題を解決するために2つのことをしなければなりませんでした:

  1. ApplicationPoolIdentityユーザー(例:IIS AP​​PPOOL\AppPoolIdentityName)に読み取り権限をWebサイトディレクトリおよびアプリケーションディレクトリに付与します。
  2. サーバーマネージャーでIIS ASP Coreをインストールする必要がありました(これは奇妙に感じましたが、うまくいきました!)
2
Rots