.net “有什么问题吗?”;“Microsoft.Practices.EnterpriseLibrary.Caching”;当试图访问“时”;CacheFactory.GetCacheManager()&引用;?
我做错了什么?我没有做什么? (我在.NET 4.0 WCF服务中使用此代码) 当调试器点击return时,它抛出以下异常: 发生System.Threading.SynchronizationLockException异常 Message=从未同步的代码块调用了对象同步方法。 Source=Microsoft.Practices.Unity 堆栈跟踪: 在e:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\life\SynchronizedLifetimeManager.cs中的Microsoft.Practices.Unity.SynchronizedLifetimeManager.TryExit()中 内部异常:.net “有什么问题吗?”;“Microsoft.Practices.EnterpriseLibrary.Caching”;当试图访问“时”;CacheFactory.GetCacheManager()&引用;?,.net,wcf,caching,.net,Wcf,Caching,我做错了什么?我没有做什么? (我在.NET 4.0 WCF服务中使用此代码) 当调试器点击return时,它抛出以下异常: 发生System.Threading.SynchronizationLockException异常 Message=从未同步的代码块调用了对象同步方法。 Source=Microsoft.Practices.Unity 堆栈跟踪: 在e:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\life\SynchronizedLif
这是Enterprise library中的错误吗?在尝试在WCF服务中创建数据库时,我遇到了相同的错误。(Entlib 5.0、.net 4.0)
我们通过使用SqlDatabase对象来解决这个问题。数据库可能已被弃用,因此我将首先检查您的代码,并确保您尝试执行的操作仍然受支持。许多企业库块中确实存在此问题。这与实现统一的方式有关。实际的问题不是代码本身不正确。异常被捕获,但调试器似乎忽略了这一事实 此处描述了该问题:
快乐编码 异常似乎是由企业库Unity块在内部引发的,但是它也会被处理。这让我把我的听力拉了出来,直到我意识到当为CLR异常启用一个异常时我已经中断了 调试->异常
当抛出异常时,取消勾选此选项可阻止调试器中断。我在向使用EntLib的旧程序添加功能时遇到此问题。关闭调试器异常感觉像是一种黑客行为。在VS 2015中,工具|选项|调试|仅支持我的代码选项对我有用
private static ICacheManager GetCacheManager()
{
try
{
return CacheFactory.GetCacheManager();
}
catch (SynchronizationLockException ex)
{
EventLogHelper.WriteError(ex);
}
catch (ConfigurationException ex)
{
EventLogHelper.WriteError(ex);
}
return null;
}
Database db = DatabaseFactory.CreateDatabase();