<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 閱讀(17042) 評論(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年1月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    隨筆檔案(2)

    文章分類(12)

    文章檔案(12)

    收藏夾

    搜索

    •  

    最新評論

    主站蜘蛛池模板: 久久久久久国产精品免费免费男同| 国产亚洲精品美女2020久久| a级在线观看免费| 国产亚洲一区二区三区在线不卡| 日本激情猛烈在线看免费观看| 国产又粗又长又硬免费视频 | 亚洲精品国产V片在线观看| 亚洲国产成人AV在线播放| 国产国产人免费视频成69大陆| 羞羞漫画页面免费入口欢迎你| 亚洲 综合 国产 欧洲 丝袜 | 区久久AAA片69亚洲| 免费精品久久天干天干| 亚洲AV无码国产精品色午友在线 | 中文在线免费看视频| 久久亚洲精品成人综合| 99久久免费精品高清特色大片| 亚洲蜜芽在线精品一区| 国外成人免费高清激情视频| 美女扒开尿口给男人爽免费视频| 亚洲精品成人网久久久久久| 国产免费一区二区视频| 亚洲欧洲日韩在线电影| 日韩精品视频免费网址| 亚洲免费在线观看| 亚洲精品国产福利片| 日韩激情无码免费毛片| 波霸在线精品视频免费观看| 亚洲成人精品久久| 在线精品免费视频| 久久不见久久见免费影院www日本| 亚洲专区先锋影音| 免费黄色大片网站| 免费无码作爱视频| 亚洲熟妇无码AV| 亚洲AV无码一区二区乱子伦| 一个人免费高清在线观看| j8又粗又长又硬又爽免费视频| 亚洲高清资源在线观看| 国产传媒在线观看视频免费观看| 久草福利资源网站免费|