Overview of Automated Transcations


Two or more .NET Framework objects can participate in the same transaction. One or more .NET Framework objects can participate in the same transaction as one or more COM+ objects. All objects must be hosted in Microsoft Windows 2K Component Services so as to receive services such as transaction processing.
There are several considerations you must address in designing transactions that span COM+ and .NET Framework objects. For example, in order for a .NET Framework object to participating in an automatic transaction, the .NET Framework class must be registered with Windows 2K Component Services. However, not all transactions are automatic. The activities you perform when programming transactions depend on the transaction model you choose.
Microsoft Transaction Server (MTS), COM+, and the Common Language Runtime support the same automatic, distributed transaction model.
Once an ASP.NET page, WebMethod, or .NET Framework class is marked to participate in a transaction, it will automatically execute within the scope of a transaction. You can control an object's transactional behavior by setting a transaction attribute value on the page, WebMethod, or class. The attribute value, in turn, determines the transactional behavior of the instantiated object.
Thus, based on the declared attribute value, an object will automatically participate in an existing or ongoing transaction, be the root of a new transaction, or never participate in a transaction at all. The ASP.NET framework supports automatic transactions on Windows 2K. By inserting a transaction directive in your ASP.NET page, you can instruct the page to participate in an existing transaction, begin a new transaction, or never participate in a transaction.
The table below lists and describes the transaction directives available in ASP.NET.
Directive Description
NotSupported This value indicates that the page does not run within the scope of transactions. When a request is processed, its object context is created without a transaction, regardless of whether there is a transaction active.
Supported The page will run in the context of an existing transaction if one exists. If not, it will run without a transaction.
Required The page requires a transaction. It will run in the context of an existing transaction if one exists. If not, it will start one.
RequiresNew The page requires a transaction and a new transaction will be started for each request.
You can indicate the level of transaction support on a page by placing the directive in your code. For example, you can ensure that the page activities always execute in the scope of a transaction by inserting the following directive:
  1. <%@ Page Transaction="Required" %>  
The default transaction state is None, which indicates that the transaction context will be ignored by the ASP.NET framework.
There is no explicit directive for this value; in other words, you cannot add page Transaction="None" to your page. Instead, simply omit the transaction directive to apply the default value.