Response.RedirectまたはResponse.Endを使用すると、IIS 7でMy OnTransactionCommitメソッドが呼び出されません。以下のコードは、IIS 6( "Comitting ..."は "OK"の後に出力されます)で期待どおりに動作しますが、IIS 7ではResponse.Endを削除しない限り、 "OK"しか表示されません。 OnTransactionAbortメソッドは、Response.EndをErr.Raiseに置き換えると、IISの両方のバージョンで呼び出されます。Response.Redirect/Endは、IIS7のClassic ASPでトランザクションをコミットしません。
パイプラインをClassicに変更しようとしましたが、効果がありませんでした。誰かがこのメソッドを実行するために変更する必要がある設定について、どのような光を当てることができますか?
<%@ 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では応答を終了しても機能します。 –