mỗi Reflector , các quy tắc cơ bản để đặt thời gian giao dịch với các nhà thầu của TransactionScope
như sau:
DefaultTimeOut được xác định bởi các quy tắc đầu tiên từ bên dưới đó là hài lòng:
- nếu các nhà xây dựng có một tham số
TimeSpan
, các DefaultTimeout là rằng tham số
- nếu các nhà xây dựng có một tham số
TransactionOption
, các DefaultTimeout là transactionOption.TimeOut
- nếu hàm tạo có tham số
TransactionScopeOption
, DefaultTimeout là scopeOption.TimeOut
- nếu hàm tạo không có tham số hết thời gian chờ, DefaultTimeout là giá trị được chỉ định trong tệp cấu hình ứng dụng hoặc web.
- nếu không, DefaultTimeOut là 1 phút.
MaxTimeOut là 10 phút trừ khi giá trị khác được chỉ định trong machine.config.
thời gian chờ hiệu lực cho giao dịch nhỏ hơn MaxTimeOut và DefaultTimeOut lớn hơn 0. Nếu cả MaxTimeOut và DefaultTimeOut đều bằng không, thời gian chờ hiệu dụng là số lượng ve được biểu thị bằng long.MaxValue
(vô cùng).
Nếu cá thể TransactionScope
không tạo giao dịch mới vì giao dịch được chuyển vào hàm tạo hoặc do tùy chọn phạm vi giao dịch không yêu cầu (ví dụ: khi giao dịch môi trường xung quanh và Giao dịch được yêu cầu), nhưng thông số timeOut
vẫn được truyền trong hàm khởi tạo, bộ hẹn giờ được bắt đầu. Khi hết thời gian chờ, phương thức TimeOut()
của giao dịch cơ bản được gọi. Các thuộc tính DefaultTimeOut và MaxTimeOut không được sử dụng trong trường hợp này.
Nếu số transactionScopeOption == TransactionScopeOption.Supress
, thời gian chờ bị bỏ qua và không có hiệu lực.
Nó cũng có thể để xác định MaxTimeOut trong tập tin cấu hình ứng dụng/web, nếu phần có liên quan trong Machine.config sẽ bị thay thế (chú ý các giá trị của allowDefintion và allowExeDefinition thuộc tính):
<sectionGroup name="system.transactions" type="System.Transactions.Configuration.TransactionsSectionGroup, System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null">
<section name="defaultSettings" type="System.Transactions.Configuration.DefaultSettingsSection, System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null"/>
<section name="machineSettings" type="System.Transactions.Configuration.MachineSettingsSection, System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null" allowDefinition="MachineToApplication" allowExeDefinition="MachineToApplication"/>
</sectionGroup>
để tham khảo nhanh chóng, sau đây là các nhà thầu TransactionScope:
public TransactionScope(Transaction transactionToUse, TimeSpan scopeTimeout, EnterpriseServicesInteropOption interopOption);
public TransactionScope(TransactionScopeOption scopeOption, TransactionOptions transactionOptions, EnterpriseServicesInteropOption interopOption);
public TransactionScope(TransactionScopeOption scopeOption, TransactionOptions transactionOptions);
public TransactionScope(TransactionScopeOption scopeOption, TimeSpan scopeTimeout);
public TransactionScope(Transaction transactionToUse, TimeSpan scopeTimeout);
public TransactionScope(TransactionScopeOption scopeOption);
Trong những tập tin cấu hình bạn đã thiết lập này? Trong phần cấu hình nào? – PVitt
Trong app.confing trực tiếp dưới gốc. Cũng trong web.config's, nhưng các thử nghiệm ở trên là cho app.config. –
MattH