<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    如果在C#中使用TransactionScope類(分布式事務),則須注意如下事項:
    1、在項目中引用using System.Transactions命名空間(先要在添加net組件的引用);

    2、具體示例如下:
      


            /// <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(0060);

                
    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;
            }



     3、對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

    4、重啟IIS服務器。

    posted on 2009-03-17 17:02 aisoft 閱讀(17039) 評論(3)  編輯  收藏 所屬分類: .NET技術

    FeedBack:
    # re: C#語言中TransactionScope類的使用[未登錄]
    2012-01-12 14:05 | a
    aaaaaa  回復  更多評論
      
    # re: C#語言中TransactionScope類的使用[未登錄]
    2012-01-12 14:06 | a
    a  回復  更多評論
      
    # re: C#語言中TransactionScope類的使用
    2012-09-29 10:44 | slx
    微軟這套分布式事務的方案,實在不怎么樣. 居然還要設置數據庫服務器的.如果其中一個數據庫是Oracle安裝在Lunix服務器上怎么搞?  回復  更多評論
      
    <2012年9月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

    隨筆檔案(2)

    文章分類(12)

    文章檔案(12)

    收藏夾

    搜索

    •  

    最新評論

    主站蜘蛛池模板: 在线看片免费人成视频久网下载| 精品无码国产污污污免费网站| 精品亚洲成A人无码成A在线观看 | 久久91亚洲精品中文字幕| 97久久精品亚洲中文字幕无码| 亚洲成a人片在线观看中文!!!| 亚洲精华国产精华精华液| fc2成年免费共享视频18| 曰批免费视频播放在线看片二| 成人av片无码免费天天看| 久久A级毛片免费观看| 成人毛片18女人毛片免费96| 久久99热精品免费观看动漫| 99久久免费国产精品热| 999任你躁在线精品免费不卡| 亚洲一区二区在线免费观看| 色婷婷7777免费视频在线观看| 四虎成人精品在永久免费| 亚洲国产第一站精品蜜芽| 亚洲国产精品久久久久| 久久精品国产亚洲AV网站| 亚洲精品高清久久| 亚洲最大的成人网| 国产亚洲欧美在线观看| 黄色a级片免费看| 国产精品免费看久久久香蕉| 精品无码人妻一区二区免费蜜桃 | 伊人久久亚洲综合| 亚洲国产精品一区二区成人片国内| 亚洲国产高清在线精品一区| 免费高清A级毛片在线播放| 99精品视频免费在线观看| 日韩免费视频网站| 免费jlzzjlzz在线播放视频| 国产av无码专区亚洲国产精品| 4480yy私人影院亚洲| 黄色a三级免费看| 91免费国产在线观看| 综合亚洲伊人午夜网| 亚洲欧美日韩国产成人| 日韩在线视频免费|