c# - 处理应用程序错误问题

标签 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未存储在数据库中。我看到了数据库,它什么也没有存储。

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

我有些疑惑

1)该项目是已发布的版本,因此所有项目文件(类, Controller ,模型等(我想您知道))都转换为DLL,所以我猜StackTrace没有得到错误行详细信息?我对么 ?别告诉我。

2)服务器没有Visual Studio。所以我想这行不通吗?我是否正确告诉我?

最佳答案

似乎连接字符串未正确设置。无法连接数据库时,将发生“处理应用程序”错误。打开您的web.config文件,并在其中添加连接字符串。

关于c# - 处理应用程序错误问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18407374/

相关文章:

c# - 在持久化聚合之前发布领域事件是否安全?

asp.net-mvc - 如何更改 ASP.Net MVC Identity 2 中的密码验证?

vb6 - 吸收VB6中的错误的功能?

node.js - 在Ubuntu Server上 puppeteer/ Chrome 失败

c# - 在 WPF 双向绑定(bind)中,如何检查触发绑定(bind)更改的是 UI 元素还是 ViewModel?

c# - 在从不同位置的同一程序集加载的对象之间抛出异常

c# - mvc 4 底部的脚本 - 不在 View 页面中执行 <scripts>

asp.net-mvc - asp.net-mvc 中的缓存

javascript - 如何从输入字段中获取多个值并添加到文本区域?

javascript - RequireJS 错误回调 (errback) 未被调用