我有一个ASP.NET Web应用程序,我想知道当一个异常被抛出我如何能显示错误消息框。

例如,

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

[该消息框显示错误]

感谢您

有帮助吗?

解决方案

您不能合理显示客户端的计算机或服务器上的消息框任一。对于客户端的计算机,你要重定向到一个错误页面显示相应的错误信息,可能包括,如果你想在异常消息和堆栈跟踪。在服务器上,你可能会想要做一些记录,或者到事件日志或日志文件。

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

请注意,“日志”上面都必须由你来实现,可能使用log4net的或其他一些日志工具。

其他提示

您不能只是叫messagebox.write因为你是从客户端断开连接。要注册的JavaScript代码,显示一个消息:

this.RegisterClientScriptBlock(typeof(string), "key",  string.Format("alert('{0}');", ex.Message), true);

使用MessageBox.Show()将导致一个消息框在服务器来显示和从除非盒被关闭处理进一步请求停止线程。

你可以做的是,

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

,这将显示出客户端之外,所提供的异常没有鼓泡。

我已经在过去这样做的方法是,当异常被抛出来填充网页上的东西的信息。 MessageBox的是Windows窗体,不能用于Web表单。我想你可以把一些JavaScript在页面上做一个警告:

Response.Write("<script>alert('Exception: ')</script>");

我不认为你会想显示异常的详细信息。我们不得不停止这样做,因为我们的客户之一,不希望自己的用户看到的是,在异常详细信息是可利用的一切。尝试与它的一些信息解释出现了一个问题显示一个JavaScript窗口。

如果你想处理在一个地方所有你的错误,你可以用你的web应用的Global.asax文件(也被称为全球应用程序文件),并与应用程序错误事件工作。它是这样的Firts您的全局应用程序文件添加到您的项目,然后在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

希望他的帮助。干杯

如果您使用的MVC和剃刀.NET的核心,你有预处理的几个层次的页面呈现之前。然后,我建议你尝试在您的视图页面的顶部包裹有条件的错误信息,像这样:

在ViewController.cs:

if (file.Length < 800000)
{
    ViewData["errors"] = "";
}
else
{
    ViewData["errors"] = "File too big. (" + file.Length.ToString() + " bytes)";
}

在View.cshtml:

@if (ViewData["errors"].Equals(""))
{
    @:<p>Everything is fine.</p>
}
else
{
    @:<script>alert('@ViewData["errors"]');</script>
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top