You are developing a Windows Communication Foundation (WCF) service that allows customers to update financial data.
The client applications call the service in a transaction. The service contract is defined as follows.
(Line numbers are included for reference only.)
01 [ServiceContract]
02 public interface IDataUpdate
03 {
04 [OperationContract]
05 [TransactionFlow(TransactionFlowOption.Mandatory)]
06 void Update(string accountNumber, double amount);
07 }
08
09 …
10 class UpdateService : IDataUpdate
11 {
12 [OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
13 public void Update(string accountNumber, double amount)
14 {
15 try
16 {
17 …
18 }
19 catch(Exception ex)
20 {
21 WriteErrorLog(ex);
22 …
23 }
24 }
25 }
26
Customers report that the transaction completes successfully even if the Update method throws an exception.
You need to ensure that the transaction is aborted if the Update method is not successful. What should you do?
A.
Insert the following line at line 22:
throw;
B.
Insert the following line at line 09:
[ServiceBehavior(TransactionAutoCompleteOnSessionClose=false)]
C.
Replace line 12 with the following line:
[OperationBehavior(TransactionScopeRequired=true, TransactionAutoComplete= false)]
D.
Insert the following line at line 09.:
[ServiceBehavior(TransactionAutoCompleteOnSessionClose=true)]
Explanation:
It is needed to throw Exception. Otherwise, it is handled successfully in Catch block.
A