在本文中,我们将通过一个简单的处理来记录在我们的网站中的错误和异常。我们这样操作,每当遇到程序错误时,将使用者导航到一个单独的页面,同时错误将被记录到服务器上的一个文本文件,每当错误发生时,我们将以日志的形式每天记录。
首先,我先写一个静态方法用于将错误信息记录到文本文件,这里是将错误信息记录到服务器上的Error文件夹下,代码如下:
/// 用于将错误信息输出到txt文件
/// </summary>
/// <param name="errorMessage">错误详细信息</param>
public static void WriteError(string errorMessage)
{
try
{
string path = "~/Error/" + DateTime.Today.ToString("yyMMdd") + ".txt";
if (!File.Exists(System.Web.HttpContext.Current.Server.MapPath(path)))
{
File.Create(System.Web.HttpContext.Current.Server.MapPath(path)).Close();
}
using (StreamWriter w = File.AppendText(System.Web.HttpContext.Current.Server.MapPath(path)))
{
w.WriteLine("\r\nLog Entry : ");
w.WriteLine("{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture));
w.WriteLine(errorMessage);
w.WriteLine("________________________________________________________");
w.Flush();
w.Close();
}
}
catch (Exception ex)
{
WriteError(ex.Message);
}
}
在网站Global.asax文件的Application_Error中加入如下代码
{
// 在出现未处理的错误时运行的代码
Exception objErr = Server.GetLastError().GetBaseException();
//记录出现错误的IP地址
string strIP = Request.UserHostAddress;
string err = "Ip【" + strIP + "】" + Environment.NewLine + "Error in【" + Request.Url.ToString() +
"】" + Environment.NewLine + "Error Message【" + objErr.Message.ToString() + "】";
//记录错误
FN.WriteError(err);
}
配置Web.Config文件
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<!--可以指定其他错误页面...-->
</customErrors>
</system.web>
建立一个GenericErrorPage.htm文件,用于使用者出现错误时呈现的错误页面。
完!
本文链接
<configSections>
<section name="HostInfo" type="System.Configuration.SingleTagSectionHandler"/>
</configSections>
IDictionary hostSetting = (IDictionary)ConfigurationManager.GetSection("HostInfo");
//IDictionary hostSetting = (IDictionary)ConfigurationSettings.GetConfig("HostInfo");
string hostName = (string)hostSetting["hostname"];
int port =Convert.ToInt16(hostSetting["port"]);
本文链接
解决方案1:禁用缓存,前一次使用的方法,在电脑上各浏览器都没问题,但在ipad、安卓手机上仍有问题
解决方案2:禁用浏览器后退键 javascript: window.history.forward(1); 结果和方案一一样的结果,pad上没效果
解决方案3:Response.Write("<script>window.location.replace('login.aspx')</script>");仍旧可以后退,感觉还不如1、2,但是在前台加个onclick事件,不涉及表单提交,竟然可以,由此就到方案4
解决方案4:用ajax,在ajax页面里将session清空,然后在现在的页面加js
if (isLogout != "") {
$.ajax({
url: "ajax/logout.aspx",
data: "code=" + encodeURI(isLogout), cache: false,
datatype: "html",
success: function (context) {
LogoutReturn(context);
}
});
}
else {
return "Error";
}
}
function LogoutReturn(context) {
if (context == "success") {
location.replace('login.aspx');
}
}
好了,算是解决了问题。
参考:http://bbs.csdn.net/u/20110519/15/bda40bee-100c-4054-a3d8-eb8b2ff2ee68.html
本文链接