私はsystem.Transactions
をウェブサービスとデータベースの周りに使用しています。リモートデータベースに接続できない場合、トランザクションはロールバックされません。データはWebサービスのデータベースに挿入されますが、ロールバックする必要があります。私は自分のWebサービスコードを書いています。分散トランザクションコーディネータサービスが実行され、コンポーネントサービスで他のパラメータが設定されます。Webサービスとデータベース間でトランザクションをロールバックできないのはなぜですか?
Webサービスとクライアントの両方が同じマシンにあると言う方が良いでしょう。
using System.Transactions;
try
{
using (TransactionScope tscope = new TransactionScope())
{
//----- Web service
IdentificationSystem.Service Identify = new IdentificationSystem.Service();
Identify.InsertWorkshopInfo(BosWorkshop.WpSvUserName, BosWorkshop.WpSvPassword,BosWorkshop.WkIcode
//-------------
//------------------ connect to a remote DB
//--------- My Sql Query
string sq= "SET XACT_ABORT ON;update tbl_kargah " +
"set [email protected] "+
"where [email protected]_kargah "+
"insert into dbo.tbl_WorkshopCodes (co_kargah,Code_ostan,Wpcode) "+
"values(@Co_kargah,@Code_ostan,@WpCode) "+
"insert into LnkWorkerSystem.Bazresi_kar.dbo.tbl_Workshopcodes(Co_Kargah,Code_Ostan,WpCode) "+
"values(@Co_kargah,@Code_ostan,@WpCode) ";
//--------
SqlCon = new SqlConnection(@BoBaz.BazConnectionString);
SqlCon.Open();
SqlCom = new SqlCommand(sq, SqlCon);
SqlCom.Parameters.Add("@co_kargah", SqlDbType.BigInt).Value = BoBaz.BazCodeKargah;
SqlCom.Parameters.Add("@Code_ostan", SqlDbType.NVarChar).Value = BoBaz.BazCodeOstan;
SqlCom.Parameters.Add("@WpCode", SqlDbType.NChar).Value = BoBaz.WpRealCode;
SqlCom.ExecuteNonQuery();
SqlCon.Close();
tscope.Complete();
}
}
catch(Exception ex)
{
string s = ex.Message;
}
は、この質問を参照してください。Transaction
そのコードは私に少しscaries ... –
申し訳ありませんが、私は、私はちょうど私のコードからそれをコピーし –
それを投稿していた私はそれを – cjk