Response.Redirect / End не фиксирует транзакцию в классическом ASP на IIS7 - PullRequest
5 голосов
/ 27 июля 2011

Мой метод OnTransactionCommit не вызывается в IIS 7, когда я использую Response.Redirect или Response.End.Приведенный ниже код работает, как и ожидалось, в IIS 6 («Comitting ...» выводится после «OK»), но в IIS 7 я получаю только «OK», если не удалю Response.End.Метод OnTransactionAbort вызывается в обеих версиях IIS, если я заменяю Response.End на Err.Raise.

Я попытался изменить конвейер на 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"
%>

Ответы [ 2 ]

1 голос
/ 19 августа 2011

Вызов Response.End или Response.Redirect, вероятно, выдает ThreadAbortedException, как при вызове .NET (IIS7 и .NET тесно интегрированы).

0 голосов
/ 26 апреля 2012

Обратите внимание, что внутренние свойства IIS по умолчанию отключены в Windows 2008 и более поздних версиях.Посмотрите эту ссылку и эту страницу поддержки от Microsoft.

...