2012-01-08 63 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