关于httpcontext实际使用时出现的一个问题

转载 2006年06月04日 20:44:00
在一次实际开发过程中,需要同步服务器上的用户,用户同步是通过XML文件来获取,当时还有一个配置文件也是xml文件放在本地,这个时候就需要使用到Server.MapPath功能或HttpContext.current.server.mappath功能,把相对路径转变成绝对路径,以用来对XML文件的读取、删除操作。本来这个功能非常简单,但是由于用户同步需要在规定间隔内自动同步,这个时候我用了timer时间触发器,在Global.asax.cs里代码如下:
 1protected void Application_Start(Object sender, EventArgs e)
 2        {
 3            
 4            
 5            Timer time = new Timer(1000 * 60 * 2);
 6            time.Elapsed +=new ElapsedEventHandler(time_Elapsed);
 7            time.AutoReset = true;
 8            time.Enabled = true;    
 9
10    
11
12        }

    时间间隔处理事件如下:
1private void time_Elapsed(object sender, ElapsedEventArgs e)
2        {
3            
4            web.User.SSOUtility su = new web.User.SSOUtility();
5            su.SynUser();
6            
7        }

    而此时在SSOUtility.cs文件里设置读取配制文件和下载到本地的同步用户文件
1private static string UserXmlFile = HttpContext.Current.Server.MapPath("SBWLogin/user.xml");
2        private static string SSOConfigFile = HttpContext.Current.Server.MapPath("SBWLogin/SSOConfig.xml");

 通过一个Button来触发SynUser()事件,一切运行正常,但到通过Timer来控制时,发现数据不能同步,通过调试发现,原来程序一运行到
1private static string UserXmlFile = HttpContext.Current.Server.MapPath("SBWLogin/user.xml");
2        private static string SSOConfigFile = HttpContext.Current.Server.MapPath("SBWLogin/SSOConfig.xml");
就出错,查了半天才发现原来是httpcontext这个上下文HTTP请求信息在时间间隔触发时,根本就不起作用,也就是说不能获取上下文HTTP请求对象,后来把这二句读取文件和语句放到Global.asax.cs上来,并修改SSOUtility  构造函数用来实例化对象时,传入二个文件的绝对地址。如下:
1private void time_Elapsed(object sender, ElapsedEventArgs e)
2        {
3            
4            web.User.SSOUtility su = new web.User.SSOUtility(UserXmlFile, SSOConfigFile);
5            su.SynUser();
6            
7        }

这时再运行程序,一切OK。
以前总以为只要我在vs.net 2003里能出现httpcontext.current这些提示,并且编译通过就应该没有问题了,经过这次的经历,才发现httpcontext通过页面触发没有问题,直接从Global.asax.cs调用也行,但只能执行一次,但从Global.asax.cs的timer时间间隔事件中触发时,其实例化对象获取失败。

    终于写完了,这可是我的处女作啊,本人经验有限,可能会出现一些不当之处,敬请谅解,还希望高手能够指正我的错误,多给点意见,也能让自己多学点东西

Android 全局异常捕获之CrashHandler,用于开发者收集获取异常信息

一个App上线或者投入到生产环境的时候崩溃了,还不知道是什么原因,这肯定是开发者的痛…所以肯定要加入全局异常捕获,如果项目较大的话,可以考虑加入第三方诸如友盟的崩溃统计插件,以达到异常捕获的效果! ...
  • u011814346
  • u011814346
  • 2017年04月06日 10:50
  • 130

Android程序Crash时如何获取异常信息

原文:http://blog.csdn.net/singwhatiwanna/article/details/17289479 前言 大家都知道,Android应用不可避免的会发生cr...
  • hedong_77
  • hedong_77
  • 2016年11月30日 17:43
  • 1021

单元测试中模拟HttpContext.Current

第一次写Web单元测试,由于以前的DLL大量引用有HttpContext.Current的代码,结果每次运行到这类代码都会由于HttpContext.Current==null导致出错。 百度了一下发...
  • oyiboy
  • oyiboy
  • 2016年01月28日 15:06
  • 1140

springMVC问题汇总

1.如果springMVC放在request中的引用类型对象值在前台取不到值,则考虑给此对象换名字,即另命名变量。 如request.setAttribute("holds", holds); 前台$...
  • xinyuebaihe
  • xinyuebaihe
  • 2017年12月29日 10:16
  • 23

慎用System.Web.HttpContext.Current

每当控制流离开页面派生的Web表单上的代码的时候,HttpContext类的静态属性Current可能是有用的。 使用这个属性,我们可以获取当前请求(Request),响应(Response),会话(...
  • dz45693
  • dz45693
  • 2014年07月31日 22:27
  • 3691

Android-获取app包信息异常

public PackageInfo getPackageArchiveInfo (String archiveFilePath, int flags) 获取app包信息,传入文件名,返...
  • xexiyong
  • xexiyong
  • 2015年03月06日 08:55
  • 764

HttpContext中保存上下文使用的参数

一个是HttpContext.Current.Timestamp 一个是HttpContext.Current.Items
  • zhaoyaoxing
  • zhaoyaoxing
  • 2016年07月27日 15:11
  • 1069

如何使用HttpContext对象

一直不甚了解HttpContext的含义,平时也用的很少,但是它在ASP时代就已经是内置的Web开发的六大对象之一。 今天看了一篇文章,ASP.NET保持用户状态的九种选择,其上有一些关于HttpC...
  • xwdpepsi
  • xwdpepsi
  • 2011年10月18日 14:31
  • 1924

理解HttpContext

HttpContext: 获取和设置与当前线程相关联的
  • buynider
  • buynider
  • 2014年04月15日 16:03
  • 576

System.Web.HttpContext.Current.Session获取值出错

在自定义类库CS文件里使用System.Web.HttpContext.Current.Session获取Session时提示错误:未将对象引用设置到对象的实例。 一般情况下通过这种方式获取Sessi...
  • u011127019
  • u011127019
  • 2013年12月27日 10:44
  • 1533
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于httpcontext实际使用时出现的一个问题
举报原因:
原因补充:

(最多只允许输入30个字)