2012-01-08 38 views
1

在global.asax.cs中的Application_Start事件中,我添加了一些初始化代码。此代码运行在衍生线程(使用新线程()创建)。初始化代码使用Server.MapPath来获取文件的物理路径。然而,很多时候我在日志文件中遇到错误: 服务器操作在此上下文中不可用 在任何情况下,我都会遇到异常。初始化并不重要,因为即使它不成功,对我来说也不会有问题。 我的问题是:Global.asax中的Server.MapPath

  1. 为什么我得到服务器不可用的错误?
  2. 如何处理异常会导致在正常执行应用程序期间出现无效Viewstate等问题。我们注意到很多这些 - 日志中后面的无效Viewstate。 我相信它不能。如果我错了,请纠正我。

由于

维卡斯

回答

1

服务器对象经由HttpContext.Current即相对于当前请求所引用。我怀疑它不可从Application_Start得知,因为那时没有请求。无论它在单独的线程中都不可靠,因为线程彼此独立运行,因此任何请求可能在您的线程尝试访问它之前已经开始或完成。

请尝试使用HostingEnvironment.MapPath(),因为这是一种静态方法。

+0

是的,我同意这一点..当你在应用程序池中创建一个新线程时,不能使用HttpContext.Current,因为它在不同的上下文中。 – springchun 2012-01-08 10:21:12