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

推荐订阅源

MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
云风的 BLOG
云风的 BLOG
小众软件
小众软件
F
Fortinet All Blogs
爱范儿
爱范儿
WordPress大学
WordPress大学
N
Netflix TechBlog - Medium
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
C
Check Point Blog
博客园 - 聂微东
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
aimingoo的专栏
aimingoo的专栏
Vercel News
Vercel News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
A
About on SuperTechFans
博客园 - 【当耐特】
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog
宝玉的分享
宝玉的分享
Jina AI
Jina AI
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - 冰绿茶

解决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>”来显示进行设置。这是我目前能找到的唯一的解决办法,大家如果有更好的,不吝赐教。^-^