<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Vishwas Lele's WebLog</title><link>http://weblogs.asp.net/vlele/default.aspx</link><description>Fleeting thoughts...</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>New FormsAuthentication &amp; Cookie Persistence</title><link>http://weblogs.asp.net/vlele/archive/2004/12/21/329045.aspx</link><pubDate>Tue, 21 Dec 2004 18:44:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:329045</guid><dc:creator>vlele</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/vlele/rsscomments.aspx?PostID=329045</wfw:commentRss><comments>http://weblogs.asp.net/vlele/archive/2004/12/21/329045.aspx#comments</comments><description>&lt;p&gt;Why are there multiple&amp;nbsp;ways to set&amp;nbsp;cookie&amp;nbsp;peristence&amp;nbsp;for ASP.NET Forms authentication? Each of the following related methods [1] allows you affect the cookie expiration period. &lt;/p&gt; &lt;h1 class="dtH1"&gt;&lt;a name="frlrfsystemwebsecurityformsauthenticationclassgetredirecturltopic"&gt;&lt;/a&gt;&lt;font size="2"&gt;&lt;font color="#000000" size="3"&gt; &lt;h1 class="dtH1"&gt;&lt;a name="frlrfsystemwebsecurityformsauthenticationticketclassctortopic"&gt;&lt;/a&gt;&lt;font size="3"&gt;FormsAuthenticationTicket Constructor&lt;/font&gt;&lt;/h1&gt;FormsAuthentication.GetRedirectUrl Method&lt;/font&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/h1&gt; &lt;h1 class="dtH1"&gt;&lt;a name="frlrfsystemwebsecurityformsauthenticationticketclassctortopic"&gt;&lt;/a&gt;&lt;a name="frlrfsystemwebhttpcookieclassexpirestopic"&gt;&lt;/a&gt;&lt;font size="3"&gt;HttpCookie.Expires Property&lt;/font&gt;&lt;/h1&gt; &lt;p class="dtH1"&gt;[1] For example, consider the following sequence of related operations:&lt;/p&gt; &lt;p class="dtH1"&gt;Create an authentication ticket (&lt;font size="2"&gt;FormsAuthenticationTicket)&lt;/p&gt;&lt;/font&gt; &lt;p class="dtH1"&gt;Derive a cookie from the ticket (&lt;font size="2"&gt;FormsAuthentication.Encrypt)&lt;/p&gt;&lt;/font&gt; &lt;p class="dtH1"&gt;Get the redirect URL (&lt;font size="2"&gt;FormsAuthentication.GetRedirectUrl)&lt;/p&gt;&lt;/font&gt; &lt;p class="dtH1"&gt;Set the cookie (&lt;font size="2"&gt;Response.Cookies.Add(cookie) )&lt;/p&gt;&lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=329045" width="1" height="1"&gt;</description></item><item><title>Lightweight Transaction Manager</title><link>http://weblogs.asp.net/vlele/archive/2004/11/19/266223.aspx</link><pubDate>Fri, 19 Nov 2004 06:02:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:266223</guid><dc:creator>vlele</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/vlele/rsscomments.aspx?PostID=266223</wfw:commentRss><comments>http://weblogs.asp.net/vlele/archive/2004/11/19/266223.aspx#comments</comments><description>&amp;nbsp; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;For decades, Transactions have known to be a powerful mechanism for robust fault-tolerance. Unfortunately, Transactions are also notoriously expensive mechanisms to use. With Whidbey, Microsoft is hoping to change that perception by lowering the cost of using Transactions. This comes about through the introduction of &lt;span style="FONT-WEIGHT: bold"&gt;Lightweight Transaction Manager (LTM)&lt;/span&gt; that is part of the System.Transaction namespace. LTM is a full fledged transaction manager for &lt;span style="FONT-WEIGHT: bold"&gt;volatile resources&lt;/span&gt;. This means as long as the resource manager (RM)&amp;nbsp;is non-durable&amp;nbsp;or durable but within the same appdomain, LTM will own the transaction. This dramatically reduces the overhead in creating a transaction. If you do indeed include a persistent RM, a second RM (2PC scenario) ownership is automatically transferred to RM(SQL Server 2005)&amp;nbsp;and MS DTC respectively. &lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;Here is an example of using LTM:&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;TransactedHashtable&lt;/span&gt; t = new &lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;TransactedHashtable&lt;/span&gt;();&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; (&lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;TransactionScope&lt;/span&gt; ts = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;TransactionScope&lt;/span&gt;())&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t.Add("aaaaa", "aaa");&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t.Add("bbbbb", "111");&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ts.Consistent = &lt;span style="COLOR: blue"&gt;true&lt;/span&gt;;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;In the above code snippet,&amp;nbsp; the TransactionScope class is used to make&amp;nbsp;the scope of the &lt;span style="FONT-STYLE: italic"&gt;using&lt;/span&gt; statement transactional. At the very end of the code block we vote for the transaction outcome by setting the Consistency property to true or false. I will&amp;nbsp;discuss the&amp;nbsp;TransactedHashtable later but it would suffice to understand that this a Hashtable that is protected by a transaction. In other words, if at some point we&amp;nbsp;determine that the transaction scope is inconsistent, all changes we have made up until that point are rolled back. This is of course a very simple example, but you relate how the error handling has been simplified by the use of transactions. &lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;TransactedHastable is not a new class provided the framework. In fact, it is class that I created by deriving from the System.Collections.HashTable class. Let us look at how easy it add transaction awareness to a given class. The&amp;nbsp;key here&amp;nbsp;is the Add operation. It&amp;nbsp;determines if&amp;nbsp;it&amp;nbsp;object instance&amp;nbsp;is part of a transaction context and if needed, it&amp;nbsp;enlists the instance with the LTM.&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&lt;span style="COLOR: blue"&gt;public class&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;TransactedHashtable&lt;/span&gt; : &lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;Hashtable&lt;/span&gt;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;{&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;private&lt;/span&gt;&lt;span style="COLOR: black"&gt; &lt;/span&gt;Hashtable m_Table;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;private&lt;/span&gt; ITransaction m_Tx;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;TransactedHashtable&lt;/span&gt;()&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;{&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_Table = new &lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;Hashtable&lt;/span&gt;();&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;override&lt;/span&gt; void Add(&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; key, &lt;span style="COLOR: blue"&gt;object&lt;/span&gt; value)&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;{&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_Tx = Transaction.Current;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m_Tx!=&lt;span style="COLOR: blue"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; !m_Table.Contains(m_Tx.ToString()))&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;ISinglePhaseNotification&lt;/span&gt; singlePhaseNotification = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; SinglePhaseNotification(&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;);&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_Tx.VolatileEnlist(singlePhaseNotification, false);&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_Table.Add(m_Tx.ToString(), m_Tx);&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;.Add(key, value);&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;}&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;public &lt;/span&gt;&lt;span style="COLOR: blue"&gt;override&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; Count&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;{&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;.Count;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;public void&lt;/span&gt; Dispose()&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;{&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;.Clear();&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;}&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;At the time of enlistment we need to pass as callback, an implementation of&amp;nbsp; the interface&lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt; ISinglePhaseEnlistment. &lt;/span&gt;&lt;span style="COLOR: black"&gt;This &lt;/span&gt;&lt;span style="COLOR: black"&gt;allows us to receive notifications from the LTM. Here is&amp;nbsp;a simplified implementation of&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;ISinglePhaseEnlistment&lt;/span&gt;&lt;span style="COLOR: black"&gt; interface:&lt;/span&gt;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&lt;span style="COLOR: black"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&lt;span style="COLOR: blue"&gt;public class&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;SinglePhaseNotification&lt;/span&gt; : System.Transactions.ISinglePhaseNotification&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;{&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TransactedHashtable m_Obj;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;SinglePhaseNotification&lt;/span&gt;(TransactedHashtable t)&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_Obj = t;&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;ISinglePhaseNotification&lt;/span&gt;.SinglePhaseCommit(&lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;ISinglePhaseEnlistment&lt;/span&gt; singlePhaseEnlistment) &lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; singlePhaseEnlistment.Committed();&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;IEnlistmentNotification&lt;/span&gt;.Commit(&lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;IEnlistment&lt;/span&gt; enlistment) { ;}&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;IEnlistmentNotification&lt;/span&gt;.InDoubt() { ;}&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;IEnlistmentNotification&lt;/span&gt;.Prepare(&lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;IPreparingEnlistment&lt;/span&gt; preparingEnlistment, &lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;byte&lt;/span&gt;[] recoveryInformation) { ;}&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;IEnlistmentNotification&lt;/span&gt;.Rollback(&lt;span style="FONT-WEIGHT: bold; COLOR: navy"&gt;IEnlistment&lt;/span&gt; enlistment) &lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_Obj.Dispose();&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: 'courier new'; mso-outline-level: 1"&gt;&amp;nbsp;}&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=266223" width="1" height="1"&gt;</description></item></channel></rss>