如何捕捉错误并将错误详细信息保存在数据库中,并重定向到经典asp中的自定义错误页面?

问题描述:

如何捕获错误并将错误详细信息保存到数据库中,并重定向到经典asp中的自定义错误页面?如何捕捉错误并将错误详细信息保存在数据库中,并重定向到经典asp中的自定义错误页面?

我想,我应该包括在我的网站的所有页面中的ASP页面,如果任何错误发生就得到这个错误的细节,它保存到数据库或邮寄到邮件ID和重定向到自定义错误页。 如果您有任何想法,请帮助我。

经典的ASP没有try/catch。 它也默认使用VBScript,上面的答案是,我猜,C#? 这里是VBscript ASP你试图做什么:

<% 
Set conn = Server.CreateObject("ADODB.Connection") 
SQL_server_string = "Provider=SQLOLEDB; Data Source=myMachine; Initial Catalog=pubs; User ID=sa; Password=pw" 
ConnectionString = SQL_server_string 
conn.Open ConnectionString 

s = "INSERT INTO" 
s = s & " tablename " 
s = s & "(" 
s = s & " fieldname1 " 
s = s & ",fieldname2 " 
s = s & ") " 
s = s & "VALUES" 
s = s & "(" 
s = s & "'" & stringvalue1 & "'" 
s = s & ",'" & stringvalue2 & "'" 
s = s & ") " 

conn.execute(s) 
if (err.number<>0) then 
m = "error on page ___ line ____<br>" 
m = m & "error number: " & err.number & "<br>" 
m = m & "error description: " & err.description & "<br>" 
m = m 7 "sql: " & s & "<br>" 
session("msg") = m 
set conn=nothing 
response.redirect("error_report.asp") 
end if 
'got past error checking... do stuff... 
%> 
+0

这个信息帮了我很多 – 2013-09-16 07:13:31

在javascript中使用try catch方法来捕获错误。在catch块内将数据发布到服务器。在服务器上有一个你熟悉的aspx页面或php页面。获取数据作为参数从这篇文章插入到aspx/php文件中,并从该文件插入到数据库中。

<script> 
    var txt=""; 
    function ProcessData() 
    { 
     try 
     { 
      .... 
     } 
    catch(err) 
     { 
      var message = err.message; 

      $ajax({ 
        type:"POST", 
        url:"Errorhandler.aspx/InsertErrordetails", 

        data:"{error: '" + message + "'}", 

        clientType:"application/json; charset=utf-8", 
        datatype:"json", 
        async: false, 
        success: function() { alert("success"); }, 
        error: function(){alert("error");} 
        }); 


    } 
} 
</script> 

服务器端代码如下所示。

public static void InsertErrordetails(string error) 
{ 
    SqlConnection Con = new SqlConnection(@"Server=db;Integrated Security=True;" +   "Database=userdb"); 

    string query = "INSERT INTO [LogTable]([Message])" + 
      "VALUES (@error)"; 

    SqlCommand cmd = new SqlCommand(query, Con); 
    cmd.Parameters.AddWithValue("@Message", error); 

    try 
    { 
     Con.Open(); 

     cmd.ExecuteNonQuery(); 
    } 
    catch (Exception) 
     { 
     throw; 
     } 
    finally 
     { 
     Con.Close(); 
     } 

}