문제

ASP.NET 웹 응용 프로그램이 있으며 예외가 발생하면 오류 메시지 상자를 표시 할 수있는 방법을 알고 싶었습니다.

예를 들어,

        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 양식 용이며 웹 양식에는 사용할 수 없습니다. 나는 당신이 페이지에 약간의 JavaScript를 넣어 경고를 할 수 있다고 생각합니다.

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

나는 당신이 예외의 세부 사항을 보여주고 싶다고 생각하지 않을 것입니다. 고객 중 한 명이 사용자가 예외 세부 사항에서 사용할 수있는 모든 것을 보는 것을 원하지 않기 때문에이 작업을 중단해야했습니다. 문제가 있음을 설명하는 정보가 포함 된 JavaScript 창을 표시해보십시오.

단일 장소에서 모든 오류를 처리하려면 WebApplication의 Global.asax 파일 (Global Application 파일이라고도 함)을 사용하고 응용 프로그램 오류 이벤트와 함께 작업 할 수 있습니다. 이 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 Alert를 사용할 수 있습니다.

그의 도움을 바랍니다. 건배

MVC 및 Razor와 함께 .NET Core를 사용하는 경우 페이지가 렌더링되기 전에 여러 레벨의 전처리가 있습니다. 그런 다음보기 페이지 상단에 조건부 오류 메시지를 래핑하는 것이 좋습니다.

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