当我使用Response.Redirect或Response.End时,在IIS 7上没有调用我的OnTransactionCommit方法。下面的代码在IIS 6上按预期工作(“正在...”在“OK”之后输出)但在IIS 7上我只得到“OK”,除非我删除Response.End。如果我用Err.Raise替换Response.End,则会在两个版本的IIS上调用OnTransactionAbort方法。
我尝试将管道更改为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"
%>
答案 0 :(得分:1)
调用Response.End
或Response.Redirect
可能会引发ThreadAbortedException
,因为在.NET
中调用它(IIS7和.NET紧密集成)。
答案 1 :(得分:0)
请注意,Windows 2008及更高版本上默认禁用IIS内部属性。 看看this link 从微软到this support page。