TransactionScope類的使用

若是在C#中使用TransactionScope類(分佈式事務),則須注意以下事項:
一、在項目中引用using System.Transactions命名空間(先要在添加net組件的引用);數據庫

二、具體示例以下:
   /// <summary>
        /// 發送消息
         /// </summary>
        /// <param name="sendUserId"></param>
        /// <param name="toUser">格式7FFA3AF2-E74B-4174-8403-5010C53E49A7|userName,7FFA3AF2-E74B-4174-8403-5010C53E49A7|userName</param>
        /// <param name="content"></param>
        /// <param name="sendedStatus">表示已送</param>
         /// <returns></returns>
        public static int sendMessage(string sendUserId, string toUser, string content, string sendedStatus)
        {           
            int receiveCount = 0;
            TransactionOptions transactionOption = new TransactionOptions();

            //設置事務隔離級別
            transactionOption.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;

            // 設置事務超時時間爲60秒
            transactionOption.Timeout = new TimeSpan(0, 0, 60);

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transactionOption))
            {
                try
                {
                    //在這裏實現事務性工做
     //發送消息
                    insertMessage(sendUserId, toUser, content, sendedStatus);

     //在接收信息表中插入記錄
                    receiveCount += insertReceiveMessage(userids[0], sendUserId, content, "0");
                   
                    // 沒有錯誤,提交事務
                    scope.Complete();
                 }
                catch (Exception ex) {
                    throw new Exception("發送信息異常,緣由:"+ex.Message);
                 }finally{
                    //釋放資源
                    scope.Dispose();
                  }                               
             }
            return receiveCount;
         }
安全

 


 三、對MSDTC組件設置:
 步驟:
  在控制面板--->管理工具--->服務 中,開啓Distributed Transaction Coordinator 服務。
 a.控制面板->管理工具->組件服務->計算機->個人電腦->右鍵->屬性
 b.選擇MSDTC頁, 確認"使用本地協調器"
 c.點擊下方"安全配置"按鈕
 d.勾選: "容許網絡DTC訪問","容許遠程客戶端","容許入站","容許出站","不要求進行身份驗證".
 e.對於數據庫服務器端, 可選擇"要求對呼叫方驗證"
 f.勾選:"啓用事務Internet協議(TIP)事務"。
 g.在雙方防火牆中增長MSDTC.exe例外
   可用命令行: netsh firewall set allowedprogram %windir%\system32\msdtc.exe MSDTC enable
服務器

四、重啓IIS服務器。網絡

相關文章
相關標籤/搜索