你的位置:睿鑫网络 >> 编程 >> web开发 >> ASP.NET >> 详细内容 在线投稿

用ASP.NET将网页错误信息写入系统日志

排行榜 收藏 打印 发给朋友 举报 来源: 网络   发布者:未知
热度10票  浏览31次 时间:2010年1月15日 10:55

R}0cf"?+h%vF0设计网站的时候,不可能我们的网站不出现一点错误,常见的“页面不存在”“页面运行出错”等错误信息一般网站多少总是存在的,关键是,这些错误出现以后,管理员怎样方便及时的发现它们、尽量减少用户对网站的不好印象。不管是IIS 4还是IIS 5,我们都可以设置网站的“自定义错误信息”,通过这样的设置,一些系统默认的比较不友好的错误信息就可以更换为网站管理员自定义的页面,这对于网站的实用和友好性都大有帮助。但是,我们在使用过程中却发现一个比较不方便的问题,当我们查看网站日志的时候,我们发现了这些错误页面的出现,但是,却不能在系统事件查看这些错误信息。而在网站的日志部分查看这些错误信息又比较麻烦,有没有办法可以直接将产生的错误信息象安全日志一样保存在系统日志部分呢?ASP.NET现在就可以做到。现在,我们一步步学习怎样实现这个功能。睿鑫网络{"P@.gb

睿鑫网络l-]0fK!wLAD4r*D9N9I

一、建立EventLog虚拟目录

n+uCa.ex/[,h`0

DM-N#fY_ Z,w&rX}0实现,我们在我们的网站建立一个名为“EventLog”的虚拟目录,具体建立方法如下:在Win2000中,打开“开始”->“程序”->“管理工具”->“Internet信息服务”,找到建立的网站,邮件点击选择“新建”,在弹出的菜单选择“虚拟目录”,然后按照向导设置即可。睿鑫网络6h!}&a.h3HS:i

Z!uU8H;x%y)S`P0二、修改WEB.CONFIG文件

8j$M ?i,SYp0

D B ~oD qw@0我们知道,在WEB.CONFIG文件中,我们可以象IIS的“自定义错误信息”页面一样设置错误信息页面的位置和错误信息是否显示等。为了实现本文提到的功能,我们需要适当修改WEB.CONFIG文件,打开“customErrors mode”为“ON”,目的是非地计算机用户只能得到友好(自定义)的错误信息,具体设置如下:

6H8FrL J1U0 睿鑫网络6RY3D7bTP}5F

O,F n"xZ0

U8M'u;rC:G(H0睿鑫网络(w:pi%?'Y

Qgc Ld dN0

1f)C_#@;b,PuO3~0

/y z]-R Nr\:f3g,P%U0

5F*R+RbY8Er7`.g0

!N+{1wbe'W0

"n,aV$m6i0 睿鑫网络k j| CrP%B^

睿鑫网络H(Z9aPUg j2N

q.B [ uG6N2~X0

V6df#[exKW"~g0

/A A+M N/t{g*k-P0睿鑫网络 dq+Pev/st

qY/X k'q0在以上的设置中,我们看到,当404和403错误产生的时候,会将页面转到刚才我们设置EventLog虚拟目录的相应页面。睿鑫网络r o;~,x1Q-Q Gq

:Pj-t(eb0三、建立其他文件睿鑫网络t-[ EKOw:w;Et

#Ol5x6ETR.c4M"m0为了试验我们的设置是否成功,首先,我们必须设立一个可以产生错误的页面Default.aspx,这个页面的代码如下:睿鑫网络V/cba}:{#{uA D$Q%~

睿鑫网络yh!?Jo[*Ol w&}

Default.aspx 页面代码睿鑫网络pL5K4^,Ty/nX

睿鑫网络g)V$T0}sOvS4I

<% @Language="VB" %>

a }I&g'ZTv0 睿鑫网络 uh2m zl

睿鑫网络+G+Ka5d$IDR"L

4C*chF$|d5E,h0

Q b-p!J/z"d$L:xq0 睿鑫网络7["VnRy9}

睿鑫网络(KOSR)y5O

睿鑫网络ipt4l`af_n

SHfHRPBj;V7u0 睿鑫网络M+@7L,Q"{7| nz1WK

睿鑫网络2^%h7WrZ7V

C*Z6rU0G8S;V"C|0

^HE$s(b*bNl(uT/D0 睿鑫网络!U!] z8j tcI#_Q:~4K

@9o"iq8f0 睿鑫网络t I1^vb\[+Zr9c

睿鑫网络 o!A&o:IF Y

:V%A%h{Nfkj9i0睿鑫网络 r8Nx:N6R z#\

睿鑫网络} H_[(S4N `

+Y6N |5nB:G0 睿鑫网络;s/Jcb Ub ]

以上代码我们设计了一个除零的错误页面,显然,按钮提交时这个页面肯定出错,我们需要查看是否错误会加入系统日志。现在,我们来看错误页面的代码,这里,我们可能用到三个错误页面customerrorpage.aspx、404Page.aspx、403Page.aspx,这些页面都放在虚拟目录EventLog下。它们的代码分别如下:

S{m,nb KT/X6eg0 睿鑫网络RWvh!Vz

Customerrorpage.aspx 代码

I)N Q$A*i7G1V*K j6@D0

9`*qi,M]3A0

$^&j7z{#r^0kIs"j0

ZEtnF!X.Rg|0

;Ap&h9W1L s:A#M0 睿鑫网络,a ]6QdW.h?6@Xj&o

睿鑫网络Sd;J4[:q5v@

睿鑫网络@ B V.}H#SK[ x`

custom error page

睿鑫网络t(dDbtB"Ni7V&co8s

睿鑫网络k#y3Yw5JI|.X~

睿鑫网络v6V(r4o!Q HK C/Z

睿鑫网络GO^)C5t5n2|!M

睿鑫网络 k*q[(mj

zf,VZFK6C ZA QA0404page.aspx(页面没找到错误) 代码睿鑫网络'L\!I:v\]["B M

睿鑫网络*U'AwS@ \'?g$`

j`*I)tM |Q3gR9B\%R0 睿鑫网络O'F;o/Oo_s(A

睿鑫网络n XV5UsPzpn/E

睿鑫网络L5\#\-[Z#Y+B

qQ"S t3y0@(V(s0 睿鑫网络;?&K.p{3iP)a

404 error page

't dl-]a:O0O*jx0

"A+d)G ClPa0睿鑫网络qh[ Yz I,h4m

睿鑫网络1O3c1CQo

睿鑫网络;L;z{f&b`E

!fDb,F&w7n&_;A0403page.aspx(权限错误)代码

4kc9Z6WOa0 睿鑫网络vc cr?\Yroq]*F6m u

睿鑫网络*p [ T3j%n8^-Sc+F5W

睿鑫网络Fbr6SA

y*sf/Od2IK0

~ J|O&y0Wo5L0睿鑫网络ZlP:D]E

睿鑫网络C(pDq:|nDF%{ v

403 error page

睿鑫网络N,@4BS7R

? vq/~Q1R4|-\!E?2eUL0

'n(`4wh4H_}![0

0@K"^#t*L5v N0

E.ga.ioN%f9D kn0

/glSL%D;Ay0设置以上页面以后,最重要的,我们需要设置全局配置文件global.asax,这样错误信息才可以保存到系统日志,我们来看这个文件怎样设置。

~\[8RH.n0

[j o!N {#g4};A0<%@ Import Namespace="System" %>睿鑫网络 Yp1{ ?JOd3u[:r#fO

睿鑫网络^[arb~6u Q

<%@ Import Namespace="System.Diagnostics" %>睿鑫网络o~h0cs N-u

睿鑫网络'])H o(F ~^;P9E#q

6kTJd|&X!Y0 睿鑫网络h;\JTv!Q

在以上设置中,定义了当错误发生的时候,WEB服务器将首先检查是否存在名为“MyLog”的日志,如果不存在,建立一个。然后,将错误信息写入日志并保存。在以上的设置中,我们注意以下几点:(1)以上代码中,我们将日志命名为“MyLog”,在实际应用中,我们可以根据自己的要求设置日志名字,比如“××的网站日志”等,这样不但容易辨别,而且也不会被其他管理员认错为别的内容;(2)以上我们给出的错误页面很简单,就是一个简单语句。在实际网站应用中,我们可以有几个选择,首先,我们可以将所有这些错误页面设置为网站的首页,当页面出错或者页面不存在的时候,直接将用户引导到网站首页,这样不显示错误信息,对用户而言可能浏览感觉较好;另外,也可以设置将错误页面设置比较友好,最好是一般用户都可以理解方式而不是简单的英文提示。

rx+?}S0

cH{^U/@3IV0四、查看效果睿鑫网络3oHI]2})@%K

睿鑫网络kA h?0R3w"Vn

现在,我们打开“事件查看”来验证是否将事件写入日志。打开“程序”->“管理”->“事件查看器”,选择“MyLog”,我们可以看到以下的界面(图一):睿鑫网络RZ y` o*s

睿鑫网络0RU0I8K-@Jf+z3b7`

在上图中,我们看到了MyLog里面有几个事件,打开查看,我们可以看到错误信息确实意见记录下来(图二):睿鑫网络:P-C,CS;~Mo}

睿鑫网络/?H;s \S}+H5@

五、总结睿鑫网络bu+K9q5ut,j'h

睿鑫网络"y;u3o?MlP

以上,我们用完整的举例详细介绍了错误信息写入系统日志的实现方法。这样实现以后,相信对系统管理和网站管理都可以起到很好的帮助作用。同时,在实用ASP.NET的过程中,我们不得不一次次惊叹它功能的完善,ASP.NET不但的页面设计、数据库访问、缓存等方面功能和性能大大提高,而且,在与系统的结合、整个环境的管理等方面也进一步完善。所以,对于习惯ASP或者PHP等其他语言编程的用户,在使用ASP.NET以后,不能只仅仅关注页面实现和数据处理等常规操作,而应该进一步在网站安全、系统管理等方面学习ASP.NET,真正在网络开发方面达到一个更高的境界。睿鑫网络;]^.o+vN RP

上一篇 下一篇

网络资源