Response.Redirect 또는 Response.End를 사용할 때 내 OnTransactionCommit 메서드가 IIS 7에서 호출되지 않습니다. 아래의 코드는 IIS 6 ("Comitting ..."이 "OK"다음에 출력 됨)에서 예상대로 작동하지만 IIS 7에서는 Response.End를 제거하지 않는 한 "OK"만 나타납니다. OnTransactionAbort 메서드는 Response.End를 Err.Raise로 바꿀 경우 두 버전의 IIS에서 모두 호출됩니다.Response.Redirect/End가 IIS7의 클래식 ASP에서 트랜잭션을 커밋하지 않습니다.
파이프 라인을 클래식으로 변경하려고 시도했지만 효과가 없습니다. 누구든지이 메서드를 실행하기 위해 어떤 설정을 변경해야하는지 알 수 있습니까?
<%@ 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"
%>
MTS ("Microsoft Transaction Server") 구성 요소가 설치되어 있는지 확인하십시오. 더 이상 Windows Server 2008에 기본 설치되어 있지 않습니다. –
@Sean은 정확하지만 설치되어 있지만 실행되지는 않을 수 있습니다. 서비스 제어판을 확인하십시오. [자세한 내용] (http://www.asp101.com/articles/chris/asptransactions/default.asp)이 모든 것이 IIS 6의 일부라고 보았으므로 "버려졌습니다"라는 좋은 기회가 있습니다. "IIS 7 이상에서. –
MTS는 이제 COM +의 일부입니다. 나는 그것이 올바르게 설치되어 제대로 실행되고 있다고 확신합니다. 'ObjectContext.SetAbort'는'Response.End' 문을 제거 할 때 예상대로 작동하지만 IIS 6에서는 응답을 끝내더라도 작동합니다. –