9

ASP.NET Web アプリケーションを使用しており、例外がスローされたときにエラー メッセージ ボックスを表示する方法を知りたいと思っていました。

例えば、

        try
        {
            do something
        }
        catch 
        {
            messagebox.write("error"); 
            //[This isn't the correct syntax, just what I want to achieve]
        }

[メッセージ ボックスにエラーが表示されます]

ありがとうございました

4

7 に答える 7

13

クライアントのコンピューターでもサーバーでも、メッセージ ボックスを合理的に表示することはできません。クライアントのコンピューターの場合、適切なエラー メッセージ (必要に応じて例外メッセージやスタック トレースなど) を含むエラー ページにリダイレクトする必要があります。サーバーでは、おそらくイベント ログまたはログ ファイルに何らかのログを記録する必要があります。

 try
 {
     ....
 }
 catch (Exception ex)
 {
     this.Session["exceptionMessage"] = ex.Message;
     Response.Redirect( "ErrorDisplay.aspx" );
     log.Write( ex.Message  + ex.StackTrace );
 }

上記の「ログ」は、おそらく log4net またはその他のロギング ユーティリティを使用して実装する必要があることに注意してください。

于 2009-03-16T18:25:27.437 に答える
12

クライアントから切断されているため、単に messagebox.write を呼び出すことはできません。メッセージボックスを表示する JavaScript コードを登録する必要があります。

this.RegisterClientScriptBlock(typeof(string), "key",  string.Format("alert('{0}');", ex.Message), true);
于 2009-03-16T18:26:39.880 に答える
6

MessageBox.Show() を使用すると、メッセージ ボックスがサーバーに表示され、ボックスが閉じられない限り、スレッドはそれ以上の要求を処理できなくなります。

あなたができることは、

this.Page.ClientScript.RegisterStartupScript(this.GetType(),"ex","alert('" + ex.Message + "');", true);

例外がバブルされていなければ、クライアント側で例外が表示されます。

于 2009-03-16T18:28:50.937 に答える
4

過去にこれを行った方法は、例外がスローされたときにページ上の何かに情報を入力することです。MessageBox は Windows フォーム用であり、Web フォームには使用できません。アラートを行うために、ページにJavaScriptを配置できると思います。

Response.Write("<script>alert('Exception: ')</script>");
于 2009-03-16T18:27:05.513 に答える
1

すべてのエラーを 1 か所で処理する場合は、web アプリケーションの global.asax ファイル (グローバル アプリケーション ファイルとも呼ばれます) を使用して、アプリケーション エラー イベントを操作できます。まず、グローバル アプリケーション ファイルをプロジェクトに追加し、次に Application_Error イベントで、次のようなエラー処理コードを配置します。

    void Application_Error(object sender, EventArgs e) 
{
    Exception objErr = Server.GetLastError().GetBaseException();
    string err = "Error Caught in Application_Error event\n" +
            "Error in: " + Request.Url.ToString() +
            "\nError Message:" + objErr.Message.ToString() +
            "\nStack Trace:" + objErr.StackTrace.ToString();
    System.Diagnostics.EventLog.WriteEntry("Sample_WebApp", err, System.Diagnostics.EventLogEntryType.Error);
    Server.ClearError();
    Response.Redirect(string.Format("{0}?exceptionMessage={1}", System.Web.VirtualPathUtility.ToAbsolute("~/ErrorPage.aspx"), objErr.Message));
}

これにより、例外の技術的な詳細がシステム イベント ログに記録されます (後でエラーを確認する必要がある場合)。次に、ErrorPage.aspx で、Page_Load イベントのクエリ文字列から例外メッセージを取得します。表示方法はあなた次第です(他の回答で提案されているjavascriptアラートを使用するか、単にテキストをasp.netリテラルに渡すことができます

彼の助けを願っています。乾杯

于 2011-06-26T05:47:51.927 に答える
1

例外の詳細を表示したいとは思わないでしょう。クライアントの 1 人が、例外の詳細で利用可能なすべてのものをユーザーに見せたくないため、これをやめなければなりませんでした。問題が発生したことを説明する情報を含む JavaScript ウィンドウを表示してみてください。

于 2009-03-16T18:28:27.397 に答える