这篇文章中只是描述了我在博客园Blog程序中遇到的问题以及我处理问题的一些想法,并没有提供解决方案,写出来希望能够给感兴趣的朋友一些参考,相然也希望得到一些建议。 : )
     在博客园服务器的应用程序事件日志,每天都有很多这样的警告与错误信息:
     警告:
博客园Blog程序中又一个奇怪问题Event Type:    Warning
博客园Blog程序中又一个奇怪问题Event Source:    ASP.NET 2.0.50727.0
    Event ID: 1073
博客园Blog程序中又一个奇怪问题Description:
博客园Blog程序中又一个奇怪问题Failed to process request.
博客园Blog程序中又一个奇怪问题Exception: System.Web.HttpException
博客园Blog程序中又一个奇怪问题Message: '/files/test/绠€鍗曠粨鏋勭ず鎰忓浘锛堝叚锛?jpg' is not a valid virtual path.
博客园Blog程序中又一个奇怪问题StackTrace:    at System.Web.VirtualPath.Create(String virtualPath, VirtualPathOptions options)
博客园Blog程序中又一个奇怪问题   at System.Web.HttpRequest.get_FilePathObject()
博客园Blog程序中又一个奇怪问题   at System.Web.Security.CookielessHelperClass.RemoveCookielessValuesFromPath()
博客园Blog程序中又一个奇怪问题   at System.Web.HttpContext.Init(HttpRequest request, HttpResponse response)
博客园Blog程序中又一个奇怪问题   at System.Web.HttpContext..ctor(HttpWorkerRequest wr, Boolean initResponseWriter)
博客园Blog程序中又一个奇怪问题   at System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr)
博客园Blog程序中又一个奇怪问题   at System.Web.HttpRuntime.ProcessRequestNoDemand(HttpWorkerRequest wr)
博客园Blog程序中又一个奇怪问题   at System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr ecb, Int32 iWRType)
博客园Blog程序中又一个奇怪问题
     错误:    
博客园Blog程序中又一个奇怪问题Event Type:    Error
博客园Blog程序中又一个奇怪问题Event Source:    ASP.NET 2.0.50727.0
博客园Blog程序中又一个奇怪问题Event ID:    1091
博客园Blog程序中又一个奇怪问题Description:
博客园Blog程序中又一个奇怪问题Failed to execute request due to unknown error. Error: 0x80004005 Unspecified error  
博客园Blog程序中又一个奇怪问题
     说明:
     1、在日志中,上面的警告信息先被记录,两个信息记录的时间在同一秒。
     2、在访问高峰期,每几分钟就会出现,也就是这个问题与ASP.NET2.0 运行时的负荷有关,ASP.NET2.0运行时太忙、太累的时候就容易出错。
     3、这两事件都是一起出现,说明是关联的,是由同一个原因引起的。
     4、从警告信息中可以看出,这个问题是url乱码引起的。
     对于这个问题,我觉得首先找到问题发生的地方是必要的,从警告信息中我们可以看出问题发生在VirtalPath中,VirtalPath是ASP.NET 2.0中一个很重要的类,只要与虚拟路径相关的操作,多多少少都会与VirtalPath有联系,遗憾的是这个类被internal保护,不能直接调用,不然在开发ASP.NET 2.0应用 程序时会很有帮助。(题外话:既然Reflector可以反编译源代码,通过反射也能调用,我觉得微软没必要用internal将那很多有用的类保护起来,开放出来,可以帮助.NET开发人员。)
     根据警告信息,用Reflector查看VirtalPath.Create(string virtualPath, VirtualPathOptions options)的代码,找出警告产生的源头,根据我的分析,应该是在下面的代码中产生的:
if (virtualPath.IndexOfAny(VirtualPath.s_illegalVirtualPathChars) >= 0)
      {
            
throw new HttpException(SR.GetString("Invalid_vpath"new object[] { virtualPath }));
      }
     由于url出现乱码,上面的代码在处理url时发现了非法字符,从而产生异常。
     而让人困惑的是,url怎么会乱码,由客户端浏览器产生的?但怎么出现问题的次数与访问量有关,而且大多数都是产生于对下载文件的访问,而且其中大多数是中文文件名,难道与通配符映射有关,难道是ASP.NET 2.0运行时在处理过程中造成了url乱码? 

相关文章:

  • 2022-12-23
  • 2022-02-11
  • 2021-12-08
  • 2022-12-23
  • 2021-07-28
  • 2021-05-19
猜你喜欢
  • 2021-09-17
  • 2021-12-15
  • 2021-06-24
  • 2021-08-31
  • 2022-12-23
  • 2021-11-30
  • 2021-06-04
相关资源
相似解决方案