处理应用程序错误问题

时间:2013-08-23 16:12:19

标签: c# asp.net-mvc error-handling global-asax

我正在使用MVC项目,并且已经在Global.ascx中记录了应用程序错误。

这是我的代码

protected void Application_Error(Object sender, System.EventArgs e)
        {
            System.Web.HttpContext context = HttpContext.Current;
            System.Exception exception = Context.Server.GetLastError();
            var stackTraceExcep = new StackTrace(exception, true); // create the stack trace
            var stackTrace = stackTraceExcep.GetFrames()         // get the frames
                          .Select(frame => new
                          {                   // get the info
                              FileName = frame.GetFileName(),
                              LineNumber = frame.GetFileLineNumber(),
                              ColumnNumber = frame.GetFileColumnNumber(),
                              Method = frame.GetMethod(),
                              Class = frame.GetMethod().DeclaringType,
                          }).FirstOrDefault();


            string FileName = stackTrace.FileName;
            string LineNumber = stackTrace.LineNumber.ToString();
            string ColumnNumber = stackTrace.ColumnNumber.ToString();
            string MethodName = stackTrace.Method.Name;
            string ClassName = stackTrace.Class.Name;
            int Errornumber = Convert.ToInt32(errorRepository.AddError(exception.Message, FileName, Convert.ToInt32(LineNumber), Convert.ToInt32(ColumnNumber), MethodName, ClassName));//This line helps to stores the error in my database.
            Response.Redirect(String.Format("~/Error/{0}/?errorNumber={1}", "App_Error", Server.UrlEncode(Errornumber.ToString())));//Pass the error number to a cantroller for show the error number(last inserted id) in view
            context.Server.ClearError();
        }

好的,让我在这里解决问题

上面的代码在我的本地计算机上正常运行。此代码将(error path , error name ,error line number ,error column number, error method name, error class name .)存储在数据库中。

现在,当我发布我的项目并在服务器上部署发布版本时(Arvixe)。

我的应用程序错误方法中的代码适用于class name method name and exception message并将此数据存储在数据库中,但error line numbererror column number未存储在数据库中。我看到了数据库,它什么都没有存储。

有什么问题?为什么在部署到Web服务器时未存储error line numbererror column name(一切在我的本地系统上运行正常)?

我有些怀疑

1)该项目是一个已发布的版本,因此所有项目文件(类,控制器,模型等(我认为你知道))都转换为DLL,所以我猜StackTrace没有得到错误行细节?我对么 ?否则告诉我。

2)服务器没有visual studio。所以我想这不起作用?我还有其他的告诉我吗?

1 个答案:

答案 0 :(得分:0)

似乎没有正确设置连接字符串。当无法连接到数据库时,会发生Handle Application错误。打开web.config文件并在那里添加连接字符串。