日期:2014-05-18  浏览次数:20788 次

关于程序发布后的两个问题
前两天把数据库服务器和应用服务器分开部署(原来iis和DB都放在一台服务器上),发现服务器的应用程序日志中密密麻麻的全是黄色的警告日志,打开看看,大多数都是说空引用异常等信息

问题一:
    这里我对抛出的空引用异常警告信息简单介绍一下:
    我在用户登录的时候使用如下方法保存当前用户的UserName
    HttpContext.Current.Session[ "UserName "]
    然后在该用户的整个生命周期里都会使用这个Session
    系统日志中抛出的警告信息中就是   在我使用这个Session的时候   使用了未被赋值的对象

那么:
1、这个Session是在用户登录的时候被赋值的,以后使用的时候为什么会出问题,而且只是偶尔出问题,并且很有规律,都是在固定的某两个文件中出现,其它使用这个Session的地方多了,为什么都没有问题?
2、既然系统能捕获到这个异常(只是警告信息),但是为什么我的应用程序不会报错?(我没有随便使用Catch吃掉这个异常)

问题二:
    我在被提示的代码里加上Try..Catch来吃掉这些异常,目的是不想让Windows发现这个东西,因为我觉得如果系统在拼命的写这些日志会影响到服务器的性能
    改完后发布,问题出来了,虽然系统提示的警告信息明显减少了,可是到下午3点左右,服务器的Cpu竟然被w3wp.exe进程占到了100%,而且一直持续,连着两天都出现这样的情况,于是今天早上我把发布的程序恢复到更新前的版本,到目前为止还没出现这种情况,虽然系统日志中的警告又开始铺天盖地的来,但是Cpu确是很正常

那么:
1、是不是因为我加了try..Catch吃异常造成了某方面的死循环呢?
2、有没有人用过AQTime?我想用这个来跟踪一下到底是哪可能会出现问题,但是AQTime好像只能打开并跟踪一个URL,而造成Cpu出现100%的情况是因为大并发的时候才会出现,简单的说我想跟踪所有人的URL,但是不现实,因为所有人的并发访问在服务器上都在一个w3wp.exe进程里,或许可以跟踪服务器上那个w3wp.exe进程,然而AQTime又提示说不能把已经在...环境下运行的..附加到进程里,郁闷,有办法解决吗?

谢谢

------解决方案--------------------
能否看一下详细的错误信息?
------解决方案--------------------
没遇到过!!!帮顶!
------解决方案--------------------
up
------解决方案--------------------
哈哈,我们也是这样的
------解决方案--------------------
首先在系统中。特别是网站中。不能大量使用try ..catch 语句,特别是使用Exception 将所有的异常全部获取.try catch中又没有对错误进行处理。

使用了HttpContext.Current.Session[ "UserName "] 要记得,session 是有一个超时时间的,看一下你的超时间是否设置了,如果超时了,session是会丢去的!



------解决方案--------------------
学习一下
------解决方案--------------------
B/S系统用try ..catch语句并不是很多,我觉得能够避免尽量避免,有些地方还可以用using来代替
------解决方案--------------------
.. 不检查代码 比较难发现问题..
------解决方案--------------------
还是应该看看代码``在自己机器上调试跟踪下``
session要么过期了``
要么没赋值``
要么session[ "value "]中value得名字拼写错了``
------解决方案--------------------
友情UP以下