0

我正在使用 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 numberand (在我的本地系统上一切正常)?error column name

我有些疑惑

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

2)服务器没有visual studio。所以我想这不起作用?我是否正确,否则请告诉我?

4

1 回答 1

0

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

于 2013-11-12T04:53:15.173 回答