たとえば、Global.asaxエラーハンドラからerorrレポート電子メールで使用するYSOD出力をキャプチャしたいとします。組み込みのysodジェネレータを利用する方法はありますか?要求に応じてASP.NET Yellow Screen of Death(YSOD)を生成することはできますか?
答えて
はい、これを行う方法があります。
グローバルのApplication_Errorイベント。asaxファイル、System.HttpUnhandledExceptionとして最後の例外を取得します。あなたのコードは次のようになります。
var lastException = Server.GetLastError() as HttpUnhandledException;
string Ysod = lastException.GetHtmlErrorMessage();
// your call to emailing routine follows
私は他の人の意見に同意します。 ELMAHでもこれを行うことができます。
ELMAHあなたは自動的に尋ねていることを確認してください。
私は一般的に、ユーザーにYSODを体験させたくないと言います。これは、エラーをキャプチャし、ユーザーに、より優雅なエラーページを可能にする前に、私は、Webアプリケーションに置かれている何か...
protected void Application_Error(object sender, EventArgs e)
{
MailMessage msg = new MailMessage();
HttpContext ctx = HttpContext.Current;
msg.To.Add(new MailAddress("[email protected]"));
msg.From = new MailAddress("[email protected]");
msg.Subject = "My app had an issue...";
msg.Priority = MailPriority.High;
StringBuilder sb = new StringBuilder();
sb.Append(ctx.Request.Url.ToString() + System.Environment.NewLine);
sb.Append("Source:" + System.Environment.NewLine + ctx.Server.GetLastError().Source.ToString());
sb.Append("Message:" + System.Environment.NewLine + ctx.Server.GetLastError().Message.ToString());
sb.Append("Stack Trace:" + System.Environment.NewLine + ctx.Server.GetLastError().StackTrace.ToString());
msg.Body = sb.ToString();
//CONFIGURE SMTP OBJECT
SmtpClient smtp = new SmtpClient("myhost");
//SEND EMAIL
smtp.Send(msg);
//REDIRECT USER TO ERROR PAGE
Server.Transfer("~/ErrorPage.aspx");
}
あなたはELMAHを聞いたことがありますか?それはあなたが本当にしたいすべての機能を与えるかもしれない...ここで
はそれについて少し説明してブログ記事です:http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx
私はELMAH (Error Logging Modules and Handlers for ASP.NET)になります
ELMAH(エラーログモジュールおよび ハンドラ)は、アプリケーション全体のエラー ロギング機能です。完全に です。実行中のASP.NET Webアプリケーションに を動的に追加するには、 の再コンパイルまたは再デプロイメントを一切必要とせず、マシン上の またはすべてのASP.NET Webアプリケーション をマシンに追加することができます。ほぼすべての未処理の例外の
- ログ:ELMAH一度
はあなたのコードの単一 行を変更せずに、次の 施設を取得し、 実行中のWebアプリケーション内に落下し、適切 を設定されています。
- 記録された例外のログ全体をリモートで表示するWebページ。
- 記録されたいずれかの詳細情報をリモートで表示するWebページ 例外。
- 多くの場合、 の元の黄色の画面では、 の例外に対してASP.NETが生成されました。カスタムエラーモード をオフにしても確認できます。
- 各エラーの発生時の電子メール通知。
- ログから最後の15個のエラーのRSSフィード。
未処理の例外がアプリケーションで発生するたびにGlobal.asaxファイル内のApplication_Errorイベントがトリガされます。 Server.GetLastError()メソッドを使用して発生した最後の例外を取得できます。
同様に、独自のカスタムエラーページは、web.configファイルのcustomErrorsセクションのweb.configで指定して作成できます。デフォルトファイルを指定することで、そこに例外がルーティングされたときにカスタムコーディングを行うことができます。
- 1. 要求に応じてASP.NET MVC Yellow Screen of Death(YSOD)を生成することができます
- 2. クライアントの要求に応じてRailsサーバーで音を再生
- 3. 要求に応じてSoapUIエラーが発生しました - NoClassDefFoundError
- 4. Googleのアプリケーションエンジンでユーザーの要求に応じてCSVファイルを生成
- 5. HTMLスニペットを別のファイルに保存し、必要に応じて変数をプラグインし、必要に応じてエコーアウトすることはできますか?
- 6. 要求/応答のペアからWSDLを作成することはできますか?
- 7. 要求に応じてFacebookのアクセストークンをキャッチしますが、どうですか?
- 8. スレッド(受信者)は要求を送信するだけで、スレッド(受信者)はファイルに要求と応答を書き込むことができますか?
- 9. JARに応じてクラス/パッケージを除外することはできますか?
- 10. 竜巻IOError要求に応じてストリームが閉じています
- 11. 大量のデータを要求しているときには、応答が返ってこないのですか?
- 12. 私の要件に応じてベースクラスを作成することができません
- 13. iPhone iOSの要求に応じてUINavigationBarを再描画する方法は?
- 14. XcodeはIDEの外でファイルの変更を要求/反応することはできますか?
- 15. SSRS - 要求に応じてデータ領域のみをロードしますか?
- 16. アイテムとそのプロパティを外部ファイルに保存し、必要に応じて呼び出すことはできますか? (RoguelikeをPythonでプログラミングするとき)
- 17. エラーメッセージユーザーの要求に応じてクエリがキャンセルされました
- 18. 要求を処理するCXFサーバーとCamelとの同期応答を作成できますか?
- 19. 要求のデフォルトのソケットオプションを上書きすることはできますか?
- 20. SEAMの別のフィールドの値に応じて、必要に応じてフィールドを検証できますか?
- 21. Nginx - ドメイン*のすべてのルート要求をwww要求に変換/リダイレクトすることができます
- 22. キーボードトラバーサルのツールチップを生成することはできますか?
- 23. クライアントは要求なしでサーブレットの応答を受け取ることができますか?
- 24. ユーザーの入力に応じてリピーターを生成します。
- 25. クロムの要求に応じてJSESSIONIDが変更される
- 26. HTTP 1.1要求にHTTP 1.0応答で応答することは有効ですか?
- 27. prepareForDeletion内でフェッチ要求を実行することはできませんか?
- 28. swfからICMPエコー要求を送信することはできますか?
- 29. 要求のリファラーヘッダーをプログラムで設定することはできますか?
- 30. 必要に応じてDelphiは.dllのみを使用できますか?
私はELMAHを使いたくない理由を知っていますが、これは私が確かに求めていた答えです。私が推測するようなサードパーティーのモジュールですでに溢れている忙しいプロジェクトに別の依存関係を抱かせたくありませんでした。 – nicknystrom
私が探していたことはまさに私のプロジェクトでElmahを使用していましたが、ユーザーが管理者の場合は、友好的なエラーメッセージだけでなく詳細なYSODを表示したいと思います。 –
私はElmahを他のプロジェクトで使っていましたが、この場合は具体的には、エラーログを制御したいのです。これは、元の質問に適切に答えて、今日はまだ立っている*一口* – ppumkin