WCF에서 TransactionAutoComplete는 기본 true 입니다.
아래와 같이 직접적으로 complete(), rollback()을 하지 말고 사용 하세요.
개념은 기존에 COM+나 웹서비스에서 사용 하시던 방법 개념과 비슷합니다.
코드를 잘 살펴 보세요~
[OperationBehavior(TransactionScopeRequired=true)]
public void BadTransaction()
{
try
{
// 작업 코드 ...
OperationContext.Current.SetTransactionComplete();
}
catch (Exception ex)
{
// 예외 로깅한후 예외를 반드시 던진다.
Transaction.Current.Rollback(); // (X)
}
}
[OperationBehavior(TransactionScopeRequired = true)]
public void GoodTransaction()
{
try
{
// 작업 코드 ...
}
catch (Exception ex)
{
// 예외 로깅한후 예외를 반드시 던진다. (에러에 대한 로그 처리 등...)
throw ex; // (O) 가급적 이방법으로...
}
}
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete=false)]
public void OtherTransaction()
{
try
{
// 작업 코드 ...
OperationContext.Current.SetTransactionComplete();
}
catch (Exception ex)
{
// 예외 로깅한후 예외 다시 호출
throw ex; // (O)
}
}
출처 : http://www.ensimple.net/enSimple/show.aspx?cnum=648&b_id=study_netfr3&page=1
'소프트웨어 > C# & ASP.NET' 카테고리의 다른 글
MSDN 웹 캐스트 시리즈 (0) | 2009.07.29 |
---|---|
개발자가 알아야 할 웹 보안 (0) | 2009.07.22 |
.NET 중복 실행 방지 (0) | 2009.07.14 |
ASP.NET AJAX 와 jquery 의 함께 사용하기 #1 (0) | 2009.05.19 |
ASP.NET AJAX 와 jquery 의 함께 사용하기 #2 (0) | 2009.05.19 |