离奇的错误日志:System.Web.StaticFileHandler.GetFileInfo

解决404错误
本文介绍了一种在Web系统中捕获和记录404错误的方法,并通过具体案例分享了解决由缺失资源导致的404错误的具体步骤。

为了在系统出问题的时候给用户一个可接受的提示界面  并能为后期维护提供第一手资料   搞了个书写错误日志东西
在web系统中直接在Global级别 进行截取和记录

  protected void Application_Error(object sender, EventArgs e)
        {
            Exception ex = Server.GetLastError().GetBaseException();
            if (ex != null)
                PubFunction.ErrorLogPrint(ex.StackTrace + ":" + ex.TargetSite.Name, ex.Message);//书写错误日志
            Response.Redirect("~/404.aspx");//转向提示界面
        }

只是近两天,发现错误日志中记录了大量的日志如下
-----------------------------2012-03-22  17:08:57---------------------------
发生错误的语句:   在 System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response)
   在 System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context)
   在 System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state)
   在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously):GetFileInfo
错误信息:文件不存在。
-----------------------------2012-03-22  17:09:26---------------------------
发生错误的语句:   在 System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response)
   在 System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context)
   在 System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state)
   在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously):GetFileInfo
错误信息:文件不存在。

而网站却是可以正常工作的,并没有转到错误页面 ,很是纠结 
1.把断点打到

 Exception ex = Server.GetLastError().GetBaseException();
这块,查看及时变量和查看堆栈信息  并没有获得有价值的东西

后来在 http://forums.asp.net/t/1360302.aspx上得到提示  
2.在调试过程中直接跟踪 Server -> Non-Public Members -> _context -> Request -> AppRelativeCurrentExecutionFilePath这个级别的信息,在这个信息中
终于发现了一张图片的路径信息,而这张图片的路径已经发生改变 。
3.直接在整个项目级别,查找使用这张图片的地方,把路径修改正确

4.终于不再记录这条错误了……

今天又出问题了,错误日志一如既往的出现上面的日志记录,又纠结了
同理,按照上述的过程 找到一个新东西" ~/favicon.ico" 这是个神马东东?  没记得网站中有用到它啊
还好在
此处找到资料," ~/favicon.ico" 是网站的图标, 就是页面头中标题之前的那个小图标 

找到问题就好办了,创建一个图标文件,放到网站根目录下,既没有这条错误日志了,浏览该网站的页面时,也有图标了;嘿嘿  一举两得
效果如下



然后现在就是还有三个问题,就是一个是跳转资源池页面太慢了,是扫描慢还是因为是单线程,就是点击文件跳转资源池页面得差多七八秒每次,太慢了,还有一个问题是在线预览txt文件是乱码:甯︿笂U鐩樸€佺綉绾裤€佷覆鍙g嚎 娲剧綉 https://10.11.8.246/login/login.cgi admin nsfocus123# 1Ghstsh! saas infopz Het509#hy 濂囧畨淇$綉绁� 鍙俊涓绘満10.0.0.44/24 绠$悊鍦板潃锛歨ttps://10.0.0.1 璐﹀彿锛歛dmin 瀵嗙爜锛歛dmin@1234 浜氫俊鏉€姣� https://192.168.252.1:8443 admin AISEdge7.0 濂囧畨淇$粓绔畨鍏ㄧ鐞嗙郴缁�--- 鏈嶅姟鍣ㄥ瘑鐮侊細zh#RU873Kh https://172.18.20.3:28443 zh hy674ty#KY 璁稿彲璇両D:EXR93-7HACN-URLGC-H7AJK-TKTMM锛� IDS锛堣处鎴� admin 瀵嗙爜 1qaz@WSX3EDC锛佹湁闂锛� https://172.18.0.21 root NetEye@1996 鍗庝负璺敱鍣紙console瀵嗙爜锛歛dmin@123锛� https://172.18.20.1 璐︽埛:admin 瀵嗙爜:Zzsk334991 浜ゆ崲鏈� console 瀵嗙爜admin 闃茬伀澧� admin 1q2w3e4r5t锛丂#$% secadmin 瀵嗙爜Zzskgc33499. 还有一个问题是文件是docx,但是程序识别后给的标签是pdf,而是word,xlsx也是pdf是excel,以下是我的server代码,你帮我看看是什么问题导致的效率慢跳转页面慢: import tornado.ioloop import tornado.web import threading import time import os import logging from handlers import MainHandler, WSHandler, UpdatePoolHandler, FileListHandler, FileDownloadHandler, FilePreviewHandler, ManualScanHandler from file_utils import scan_pools # 后台扫描线程 def pool_scanner(): while True: try: scan_pools() logging.info("资源池扫描完成") except Exception as e: logging.error(f"资源池扫描错误: {str(e)}") time.sleep(5) # 每5秒扫描一次 # 修复模板路径和路由配置 def make_app(): base_dir = os.path.dirname(os.path.abspath(__file__)) template_path = os.path.join(base_dir, "templates") static_path = os.path.join(base_dir, "static") return tornado.web.Application([ (r"/", MainHandler), (r"/ws", WSHandler), (r"/update_pool", UpdatePoolHandler), (r"/files/(.+)", FileListHandler), (r"/download", FileDownloadHandler), (r"/preview", FilePreviewHandler), (r"/scan", ManualScanHandler), # 新增这一行 (r"/static/(.*)", tornado.web.StaticFileHandler, {"path": static_path}), (r"/admin", MainHandler), # 添加admin路由 ], template_path=template_path, cookie_secret="YOUR_SECRET_KEY", login_url="/login", debug=True) # 开启调试模式 class NotFoundHandler(tornado.web.RequestHandler): def prepare(self): self.set_status(404) self.render("404.html") if __name__ == "__main__": # 配置日志 logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger("ResourceManager") # 初始化扫描 try: scan_pools() logger.info("资源池扫描初始化完成") except Exception as e: logger.error(f"资源池扫描初始化失败: {str(e)}") # 启动扫描线程 #threading.Thread(target=pool_scanner, daemon=True).start() # 创建并启动应用 app = make_app() app.listen(8888) print("服务器运行中: http://localhost:8888") try: tornado.ioloop.IOLoop.current().start() except KeyboardInterrupt: logger.info("\n服务器已停止") except Exception as e: logger.error(f"服务器异常停止: {str(e)}") #手动更新路径下的新文件,只支持视频预览,支持文档预览 以下是控制台日志你看看有什么问题没有,还有老师这个配置修改成功,是在本机生成config文件来存储配置了吗,给我解释一下: INFO:FileUtils:扫描完成: pool1 (3 文件) INFO:FileUtils:扫描完成: pool2 (9 文件) INFO:FileUtils:扫描完成: pool3 (3 文件) INFO:ResourceManager:资源池扫描初始化完成 服务器运行中: http://localhost:8888 INFO:tornado.access:304 GET / (::1) 3.00ms INFO:tornado.access:101 GET /ws (::1) 9.00ms INFO:tornado.access:200 GET /files/pool2 (::1) 211.70ms INFO:tornado.access:200 GET /preview?pool=pool2&file=%E5%AE%89%E6%9C%8D%E5%B7%A5%E4%BD%9C%E9%87%8F.txt (::1) 12.00ms WARNING:tornado.access:404 GET /favicon.ico (::1) 3.00ms INFO:tornado.access:304 GET /files/pool2 (::1) 11.58ms INFO:tornado.access:304 GET /files/pool2 (::1) 7.02ms INFO:Config:配置保存成功 INFO:tornado.access:200 POST /update_pool (::1) 6.00ms INFO:tornado.access:200 GET /files/pool3 (::1) 10.52ms INFO:tornado.access:200 GET /preview?pool=pool3&file=111.xlsx (::1) 3.00ms INFO:tornado.access:200 GET /preview?pool=pool3&file=%E5%AF%B9%E6%AF%94%E5%85%AC%E5%BC%8F.txt (::1) 3.00ms INFO:tornado.access:200 GET /preview?pool=pool3&file=%E8%B4%A6%E5%8F%B7.txt (::1) 3.00ms INFO:tornado.access:304 GET / (::1) 2.28ms INFO:tornado.access:101 GET /ws (::1) 4.00ms INFO:tornado.access:304 GET /files/pool2 (::1) 11.00ms INFO:Config:配置保存成功 INFO:tornado.access:200 POST /update_pool (::1) 9.00ms INFO:tornado.access:304 GET /files/pool2 (::1) 17.00ms INFO:Config:配置保存成功 INFO:tornado.access:200 POST /update_pool (::1) 8.00ms INFO:tornado.access:200 GET /files/pool3 (::1) 13.94ms INFO:tornado.access:200 GET /preview?pool=pool3&file=1.docx (::1) 5.00ms INFO:tornado.access:304 GET /preview?pool=pool3&file=%E8%B4%A6%E5%8F%B7.txt (::1) 2.00ms
08-20
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值