惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
罗磊的独立博客
小众软件
小众软件
T
Tailwind CSS Blog
宝玉的分享
宝玉的分享
博客园_首页
N
Netflix TechBlog - Medium
B
Blog
Recent Announcements
Recent Announcements
Y
Y Combinator Blog
Blog — PlanetScale
Blog — PlanetScale
L
LangChain Blog
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
Last Week in AI
Last Week in AI
Jina AI
Jina AI
V
V2EX
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
博客园 - 【当耐特】

博客园 - 冰绿茶

解决Ehcache缓存警告问题 数据绑定控件和XmlDataSource控件结合使用,通过后台绑定Xml数据片段遇到的问题 微软StockTrader 2.03 学习笔记(8)--配置服务实现示例指南(四) 微软StockTrader 2.03 学习笔记(7)--配置服务实现示例指南(三) 微软StockTrader 2.03 学习笔记(6)--配置服务实现示例指南(二) 微软StockTrader 2.03 学习笔记(5)--配置服务实现示例指南(一) 微软StockTrader 2.03 学习笔记(4)--配置数据库生成工具介绍 SQLServer实战经验分享--ServiceBroker安全配置和使用示例 ASP.NET Trick文章系列--使用State Server管理Session状态的另类经济用法 微软StockTrader 2.03 学习笔记(3)--配置网站和配置服务在StockTrader中的使用示例 在数据库事务设计中经常会遇到的疑惑 微软StockTrader 2.03 学习笔记(2)--什么是配置网站和配置服务、配置存储库 微软StockTrader 2.03 学习笔记(1)--学习大纲整理 asp.net 2.0页面性能的考虑--异步页面处理模型 Asp.net 2.0 动态加载其他子目录用户控件问题 Web 下配置文件信息的读写 .net 2.0 中对配置文件的读写 ASP.NET 2.0加密网站配置文件中的信息 - 冰绿茶 - 博客园 Understanding ASP.NET Provider Model (Creating Custom Membership and Role Providers) - Part 3
关于NHibernate、Castle和WCF做分布式事务时发生异常的解决办法
冰绿茶 · 2009-09-25 · via 博客园 - 冰绿茶

一般情况下在Asp.net应用程序中,使用Castle的NHibernate Facility来管理ISession,是使用Open In View模式的,然而在这种情况下使用涉及WCF的分布式事务的时候,就可能会导致数据库死锁的情况,直接导致应用程序崩溃。在NHibernate In Action中有这么一段话:

Because NHibernate 1.2.0 has some problems dealing with APIs like System.
Transactions, you must use OnClose mode if you discover that the session opens multiple
connections in a single transaction.

讲得就是这种情况发生的原因,关键的问题就是在你的数据库连接的connection-release模式,在NHibernate 1.2.0以后的默认的connection-release为auto,它会自动选择最佳的模式:AfterTransaction。可能由于是NHibernate事务设计或兼容性的一些原因导致了这种情况的发生。目前根据书中给的解决方案就是手动把connection-release模式调整为OnClose。也就是让ISession维持的数据库连接在显示关闭ISession的时候发生,而不是每个业务事务后发生。你需要在NHibernate的配置中加入“<item key="connection.release_mode">on_close</item>”来显示进行设置。这是我目前能找到的唯一的解决办法,大家如果有更好的,不吝赐教。^-^