ASP.NET Webアプリを公開した後、ローカルサーバーでWebサイトをホストしようとしています。ただし、起動すると、ブラウザで次のエラーが表示されます。
おっとっと。 500内部サーバーエラーアプリケーションの起動中にエラーが発生しました。
このエラーの内容をデバッグするにはどうすればよいですか? Visual StudioでIISExpressと "web"の使用を開始すると、Webサイトは機能します(デバッグ構成とリリース構成の両方)。
開発環境を使用していますが、app.UseDeveloperExceptionPage();
を既に指定しています。
here の指示に従ってIISに展開しました。
また、提示された提案を試しました here (「公開する前にすべての既存ファイルを削除する」を選択して再公開します)。 (OPには若干異なるエラーがあるため、新しい質問を投稿しています。)
私はインターネット上で何時間も探しましたが、それについて多くのコンテンツはないようです。何か案は?
ASP.NET 5 RC1を使用して、Windows 7を使用しています。
発生している実際のエラーを確認するには、web.configファイルにstdoutLogEnabled=true
を設定する必要があります。 stdoutLogFile
引数を使用して、これらのファイルが書き込まれる場所を指示できます。以下のスクリーンショットの例は、stdoutLogFile=".\logs\stdout"
に書き込みます。 (ディレクトリが存在することを確認する必要があります;アプリはそれを作成しません)
適切な設定ファイルが見つからないという点については、デフォルトの環境は実稼働です。プロジェクトプロパティでVisual Studioで明示的に開発に設定されます。
Update:AspNetCore RTMでは、モジュールはシステム下でaspnetCoreと呼ばれます。 web.configのwebServerノード。また、@ ErikEがコメントで指摘したように、web.configは以前のリリースのようにwwwrootの下ではなく、プロジェクトのルートに配置されました。
このエラーは、スタートアップからデータベース接続を試行している場合(シードなど)にも発生し、データベースサーバーでの不十分な前悪行為のためにデプロイメントサーバーで失敗します。
このエラーはいくつかの条件下で発生します。私の状況では、データベース接続文字列が正しく設定されていませんでした。 Visual Studio 2017で次のように修正しました。
1)プロジェクトを右クリックして「公開」を選択し、メインエリアで「公開」ページを開きます。
2)左側の[公開]タブを選択します
3)[概要]セクションには、[設定...]リンクがあります。クリックして。これにより、公開ダイアログが開きます。
4)左側の[設定]タブをクリックします。
5)[ファイルの公開オプション]を展開し、[宛先の追加ファイルを削除する]をオンにします
6)[データベース]を展開し、[実行時にこの接続文字列を使用する]をオンにします(これは、発行オプションを最初に設定した方法に基づいてAzure SQL接続文字列が事前に入力されていました)
7)Entity Framework Migrationsを展開し、「発行時にこの移行を適用する」をチェックします(繰り返しますが、接続文字列は事前に入力されています)
8)[保存]をクリックします
9)公開
10)指を交差させる
問題:このエラーは、おそらくApplication Pool Identities
。調べるには:
ウィンドウに移動タスクマネージャおよび詳細タブ/プロセス(Windows OSに依存)w3wp.exe
およびUser name
アプリケーションを探します(<App_Pool_Name>
通常DefaultAppPool
)として実行されますIIS Worker Process
。アプリがそこにリストされていない場合、アプリにはデータベースに対する十分な権限がありません。
修正するには以下を実行し、アプリへのフルアクセスを許可します。
SQL Server Management Studioに移動し、管理者としてログインセキュリティ> ログイン>ログインを右クリックして、 New Login
:
一般:の下
にとって Login Name:
EnterIIS APPPOOL\<App_Pool_Name>
通常DefaultAppPool
にとって Default Database:
指し示す <Your_App_Database>
ユーザーマッピングの下:
ボックスUsers mapped to this login:
-チェックボックスにマップする<Your_App_Database>
-ユーザーの下EnterIIS APPPOOL\<App_Pool_Name>
通常DefaultAppPool
-デフォルトスキーマの下Enterdbo
ボックスDatabase role membership for:
<Your_App_Database>
-次のボックスにチェック:db_datareader
、db_datawriter
、およびpublic
Click[〜#〜] ok [〜#〜]
次に、アプリにアクセスしてみてください。