2013-10-30 43 views
6

我有一段已經工作了一段時間的應用程序。我試着用VS2013運行它,並掛起它試圖初始化DataCacheFactory對象的一行。 VS2010和VS2012的代碼工作正常。AppFabric DataCacheFactory()初始化在VS2013中掛起,在VS2010和VS2012中正常工作

private static DataCacheFactory GetDataCacheFactory() 
    { 
     if (factory == null) 
     { 
      lock (lockObject) 
      { 
       if (factory == null) 
       { 
        factory = new DataCacheFactory(); //VS2013 hangs on this line 
       } 
      } 
     } 
     return factory; 
    } 

沒有產生錯誤。該代碼只是掛在行factory = new DataCacheFactory()

AppFabric DLLs是當前版本。

我歡迎任何建議,以確定爲什麼代碼掛在這一行。

+0

你能否描述你的環境。它是您的機器上運行的遠程集羣還是單個主機? – Cybermaxs

+0

您可以將windbg附加到您的vshost&devenv進程,並打印〜* e!clrstack命令產生的結果(使用sosex)嗎? – Olivier

+0

或者只是將另一個devenv附加到您的正在運行的進程中,並查看哪些線程處於活動狀態,以及它們在做什麼/掛在... – Olivier

回答

0

我已經解決了這個問題,但我不知道是什麼導致它。我試着使用DebugDiag來轉儲並分析它。分析表明,該進程正在等待某些Microsoft代碼中的兼容性模塊中的某些內容完成。

我注意到在IIS 8中安裝了兩個兼容性數據庫。我卸載了這兩個項目,並嘗試再次運行我的應用程序。這一次,該應用成功執行了懸掛的線路。

雖然這解決了這臺機器上的問題,但我仍然不知道是什麼導致了這個問題。我有一個擁有類似配置的同事,即使在安裝了兼容性數據庫的情況下,他也不會遇到掛在上面的行上的應用程序。

0

當您在VS上開發應用程序時,這可能是一個.net應用程序。請在VS13上運行時檢查項目屬性中的.net框架版本。

+0

目標.net框架是4.0。它與VS 2010和2012中運行的代碼相同,但在2013年掛起。 – mcolegro

+0

在try塊上執行該操作並捕獲任何異常。 嘗試 { factory = new DataCacheFactory(); } catch(//相關異常) – autopilot

+0

我嘗試了try/catch塊中的相同代碼,但由於沒有異常,所以沒有產生任何結果。代碼只是掛在這條線上。 – mcolegro

相關問題