ASP.NET中常用的三十三种代码第2/7页

 更新时间:2007年03月25日 00:00:00   作者:  

8.关于日期格式
日期格式设定 
DataFormatString="{0:yyyy-MM-dd}" 
我觉得应该在itembound事件中 
e.items.cell["你的列"].text=DateTime.Parse(e.items.cell["你的列"].text.ToString("yyyy-MM-dd")) 
9.获取错误信息并到指定页面
不要使用Response.Redirect,而应该使用Server.Transfer 
e.g 
// in global.asax 
protected void Application_Error(Object sender, EventArgs e) { 
if (Server.GetLastError() is HttpUnhandledException) 
Server.Transfer("MyErrorPage.aspx"); 
//其余的非HttpUnhandledException异常交给ASP.NET自己处理就okay了 :) 

Redirect会导致post-back的产生从而丢失了错误信息,所以页面导向应该直接在服务器端执行,这样就可以在错误处理页面得到出错信息并进行相应的处理 
10.清空Cookie
Cookie.Expires=[DateTime]; 
Response.Cookies("UserName").Expires = 0 
11.自定义异常处理
//自定义异常处理类 
using System; 
using System.Diagnostics; 
namespace MyAppException 

 /// <summary> 
 /// 从系统异常类ApplicationException继承的应用程序异常处理类。 
 /// 自动将异常内容记录到Windows NT/2000的应用程序日志 
 /// </summary> 
 public class AppException:System.ApplicationException 
 { 
public AppException() 

 if (ApplicationConfiguration.EventLogEnabled)LogEvent("出现一个未知错误。"); 

 public AppException(string message) 
 { 
LogEvent(message); 
 } 
 public AppException(string message,Exception innerException) 
 { 
LogEvent(message); 
if (innerException != null) 

 LogEvent(innerException.Message); 

 } 
 //日志记录类 
 using System; 
 using System.Configuration; 
 using System.Diagnostics; 
 using System.IO; 
 using System.Text; 
 using System.Threading; 
 namespace MyEventLog 
 { 
/// <summary> 
/// 事件日志记录类,提供事件日志记录支持 
/// <remarks> 
/// 定义了4个日志记录方法 (error, warning, info, trace) 
/// </remarks> 
/// </summary> 
public class ApplicationLog 

 /// <summary> 
 /// 将错误信息记录到Win2000/NT事件日志中 
 /// <param name="message">需要记录的文本信息</param> 
 /// </summary> 
 public static void WriteError(String message) 
 { 
WriteLog(TraceLevel.Error, message); 
 } 
 /// <summary> 
 /// 将警告信息记录到Win2000/NT事件日志中 
 /// <param name="message">需要记录的文本信息</param> 
 /// </summary> 
 public static void WriteWarning(String message) 
 { 
WriteLog(TraceLevel.Warning, message); 
 } 
 /// <summary> 
 /// 将提示信息记录到Win2000/NT事件日志中 
 /// <param name="message">需要记录的文本信息</param> 
 /// </summary> 
 public static void WriteInfo(String message) 
 { 
WriteLog(TraceLevel.Info, message); 
 } 
 /// <summary> 
 /// 将跟踪信息记录到Win2000/NT事件日志中 
 /// <param name="message">需要记录的文本信息</param> 
 /// </summary> 
 public static void WriteTrace(String message) 
 { 
WriteLog(TraceLevel.Verbose, message); 
 } 
 /// <summary> 
 /// 格式化记录到事件日志的文本信息格式 
 /// <param name="ex">需要格式化的异常对象</param> 
 /// <param name="catchInfo">异常信息标题字符串.</param> 
 /// <retvalue> 
 /// <para>格式后的异常信息字符串,包括异常内容和跟踪堆栈.</para> 
 /// </retvalue> 
 /// </summary> 
 public static String FormatException(Exception ex, String catchInfo) 
 { 
StringBuilder strBuilder = new StringBuilder(); 
if (catchInfo != String.Empty) 

 strBuilder.Append(catchInfo).Append("\r\n"); 

strBuilder.Append(ex.Message).Append("\r\n").Append(ex.StackTrace); 
return strBuilder.ToString(); 
 } 
 /// <summary> 
 /// 实际事件日志写入方法 
 /// <param name="level">要记录信息的级别(error,warning,info,trace).</param> 
 /// <param name="messageText">要记录的文本.</param> 
 /// </summary> 
 private static void WriteLog(TraceLevel level, String messageText) 
 { 
try 

 EventLogEntryType LogEntryType; 
 switch (level) 
 { 
case TraceLevel.Error: 
 LogEntryType = EventLogEntryType.Error; 
 break; 
case TraceLevel.Warning: 
 LogEntryType = EventLogEntryType.Warning; 
 break; 
case TraceLevel.Info: 
 LogEntryType = EventLogEntryType.Information; 
 break; 
case TraceLevel.Verbose: 
 LogEntryType = EventLogEntryType.SuccessAudit; 
 break; 
default: 
 LogEntryType = EventLogEntryType.SuccessAudit; 
 break; 
 } 
 EventLog eventLog = new EventLog("Application", ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName ); 
 //写入事件日志 
 eventLog.WriteEntry(messageText, LogEntryType); 

 catch {} //忽略任何异常 

 } //class ApplicationLog 

相关文章

最新评论