2013-10-30 37 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

相关问题