繁体   English   中英

Response.Redirect / End不在IIS7上的Classic ASP中提交事务

[英]Response.Redirect/End does not commit transaction in Classic ASP on IIS7

当我使用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"
%>

调用Response.EndResponse.Redirect可能会引发ThreadAbortedException ,因为在.NET中调用它(IIS7和.NET紧密集成)。

请注意,Windows 2008及更高版本上默认禁用IIS内部属性。 看看这个链接和微软的这个支持页面

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM