Phương thức OnTransactionCommit của tôi không được gọi trên IIS 7 khi tôi sử dụng Response.Redirect hoặc Response.End. Mã dưới đây hoạt động như mong đợi trên IIS 6 ("Comitting ..." là đầu ra sau "OK") nhưng trên IIS 7 tôi chỉ nhận được "OK" trừ khi tôi loại bỏ Response.End. Phương thức OnTransactionAbort được gọi trên cả hai phiên bản của IIS nếu tôi thay thế Response.End bằng Err.Raise.Response.Redirect/End không giao dịch trong ASP cổ điển trên IIS7
Tôi đã thử thay đổi đường dẫn thành Cổ điển nhưng điều đó không có hiệu lực. Bất cứ ai có thể làm sáng tỏ những gì tôi cần phải thay đổi để có được phương pháp này để thực hiện?
<%@ 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"
%>
Đảm bảo thành phần MTS ("Microsoft Transaction Server") được cài đặt, tôi tin rằng nó không còn được cài đặt theo mặc định trong Windows Server 2008 –
@Sean là chính xác, tuy nhiên nó có thể được cài đặt nhưng không chạy. Kiểm tra bảng điều khiển dịch vụ. [chi tiết hơn] (http://www.asp101.com/articles/chris/asptransactions/default.asp) Điều này nói rằng, từ những gì tôi đã thấy tất cả điều này là một phần của IIS 6 vì vậy có cơ hội tốt nó đã được "bán phá giá "trong IIS 7 trở lên. –
MTS hiện là một phần của COM +. Tôi khá tự tin rằng nó được cài đặt và chạy một cách chính xác. 'ObjectContext.SetAbort' hoạt động như mong đợi khi tôi loại bỏ câu lệnh' Response.End' nhưng trên IIS 6 nó hoạt động ngay cả khi tôi kết thúc phản hồi. –