2011-07-27 15 views
5

Response.Redirect veya Response.End'i kullandığımda OnTransactionCommit yöntemi IIS 7'de çağrılmıyor. Aşağıdaki kod IIS 6'da beklendiği gibi çalışıyor ("Comist ...", "Tamam" dan sonra çıkıyor), ancak IIS 7'de Response.End'i kaldırmazsam yalnızca "OK" alırım. Yanıtı değiştirirseniz Err.Raise ile IIS'nin her iki sürümünde OnTransactionAbort yöntemi çağrılır.Response.Redirect/End, IIS7 üzerinde Klasik ASP'de işlem gerçekleştirmiyor

Boru hattını Klasik olarak değiştirmeyi denedim ancak bunun hiçbir etkisi olmadı. Bu yöntemin uygulanabilmesi için hangi ayarı değiştirmem gerektiğini herhangi bir ışık tutabilir mi?

<%@ Transaction="Supported" Language="VBScript" %> 
<% Option Explicit %> 
<% 
'Called by context unless transaction is aborted 
Sub OnTransactionCommit() 
    Response.Write("Commiting...") 
    Response.Flush 
End Sub 

'Called by context when transaction is aborted 
Sub OnTransactionAbort() 
    Response.Write("Aborting...") 
    Response.Flush 
End Sub 

Response.Write("OK<br/>") 
Response.Flush 
Response.End 
'Err.Raise 1, "test" 
%> 
+2

MTS ("Microsoft Transaction Server") bileşeninin yüklü olduğundan emin olun, Windows Server 2008 –

+0

@Sean'da varsayılan olarak yüklenmediğine inanıyorum, ancak yüklü olabilir, ancak çalışıyor olabilir. Servis kontrol panelini kontrol edin. [daha fazla ayrıntı] (http://www.asp101.com/articles/chris/asptransactions/default.asp) Bu, tüm bunları gördüğüm kadarıyla IIS 6'nın bir parçası olduğunu söyledi. "IIS 7 ve sonrası. –

+0

MTS artık COM + 'nun bir parçasıdır. Oldukça emin yüklü ve düzgün çalışıyor. 'Response.End' deyimini kaldırdığımda ancak 'ObjectContext.SetAbort' beklendiği gibi çalışır ancak IIS 6'da yanıtı sonlandırdığımda bile çalışır. –

cevap

1

.NET bunu çağırarak olarak (IIS7 ve .NET sıkıca entegre edilmiştir) gelmez, Response.End veya Response.Redirect muhtemelen ThreadAbortedException atar çağrılıyor.

+0

Muhtemelen neler olduğunu kabul ediyorum, ancak işlem hala ya IIS 6'da olduğu gibi iptal edilmeli veya işlenmelidir. –

0

Windows iç ve dış sürümlerinde IIS iç özelliklerinin varsayılan olarak devre dışı bırakıldığını unutmayın. this link ve microsoft tarafından this support page'a bakın.