asp.net 分布式事务之TransactionScope

直入主题,用于测试的表间关系如下:

C#代码如下:

  /// <summary>
        /// 连接字符串
        /// </summary>
        private static string _conStr = "server=AB0IB3JZBZAZHQI;database=Test;uid=sa;pwd=sa;";
        /// <summary>
        /// TransactionScope
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnTransactionScope_Click(object sender, EventArgs e)
        {
            using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
            {

                bool isSuccessful = CreateGrade() && CreateUser();

                if (isSuccessful) ts.Complete();
            }
        }

        /// <summary>
        /// 添加年级
        /// </summary>
        /// <returns></returns>
        private bool CreateGrade()
        {
            SqlConnection conn = new SqlConnection(_conStr);
            try
            {

                SqlCommand cmd = new SqlCommand("insert into Grade values(‘S1‘,‘1‘)", conn);

                conn.Open();

                return cmd.ExecuteNonQuery() > 0;

            }
            catch (Exception)
            {
                return false;
            }
            finally
            {
                conn.Close();
            }

        }

        /// <summary>
        /// 添加用户
        /// </summary>
        /// <returns></returns>
        private bool CreateUser()
        {
            SqlConnection conn = new SqlConnection(_conStr);
            try
            {
                SqlCommand cmd = new SqlCommand("insert into [User] values(‘ray‘,‘[email protected]‘,‘fs‘,2)", conn);

                conn.Open();

                return cmd.ExecuteNonQuery() > 0;
            }
            catch (Exception)
            {

                return false;
            }

            finally
            {
                conn.Close();
            }

        }
View Code

在本地测试,无任何问题,CreateGrade插入成功,CreateUser()插入失败,查询数据库发现最终无任何数据。
将网站发布到IIS上,让其它用户访问,要保证事物能够起作用,我们还必须设置MSDTC.Win 7 的设置我们可以参考如下链接:http://a.th7.cn/?l=3&ref=www_iphone&order=2&dict=22&tj=www_normal_2_0_10&cltj=cloud_title&src=http%3A%2F%2Fwww.th7.cn%2FProgram%2Fnet%2F2012%2F05%2F02%2F73061.shtml

在于此中的操作步骤的我啰嗦一点:防火墙设置。

运行firewall打开防火墙

点击此按钮添加msdtc.exe 如下图所示:

除此之外,还要将你的网站的端口(比如我的为5566)对外开放,点击防火墙,高级设置,如下图所示:

 

然后下一步。完成即可。以上设置,网站和数据库在同一服务器。若二者不在同一服务器,则需要分别做次设置。

asp.net 分布式事务之TransactionScope,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。