如何在OnBeginRequest中完全终止HTTP事务?

时间:2019-08-20 15:57:28

标签: iis httpmodule

我正在编写一个带有HTTP接口的普通事务处理器。客户将交易详细信息发布在POST正文中。

我真正需要的只是OnBeginRequest处理程序。当我深入到本次活动的底部时,我已经完成了。无需继续在服务器上进行IIS管道处理。

所以我将Response.End放在底部。此“有效”,但确实引发了异常,我只是捕获并抑制了该异常。

  1. 我应该从性能还是质量的角度来考虑这一点?

  2. 有什么方法可以更干净地完成此操作吗?

    <!DOCTYPE html>
    <html>
    
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width">
      <title>JS Bin</title>
    </head>
    
    <body>
      <div>
        <p>Test 001</p>
    
        <div>
          <div class="wrapper" style="--aspect-ratio:411/100">
            <img class="wrapper_img" src="https://placehold.it/411x100" />
          </div>
        </div>
    
        Test 002 (broken by intention)
    
        <div>
          <div class="wrapper" style="--aspect-ratio:150/100">
            <img class="wrapper_img" src="https://broken-placehold.it/150x100" />
          </div>
        </div>
    
        Test 003
    
        <div>
          <div class="wrapper" style="--aspect-ratio:411/600">
            <img class="wrapper_img" src="https://placehold.it/411x600" />
          </div>
        </div>
    
    
    Test 004
    
        <div>
          <div class="wrapper" style="--aspect-ratio:150/100">
            <img class="wrapper_img" src="https://placehold.it/150x100" />
          </div>
        </div>
      </div>
    </body>
    
    </html>

1 个答案:

答案 0 :(得分:1)

我认为,这是使用Response.End终止请求的唯一方法。您可以尝试的另一件事是HttpContext.Current.ApplicationInstance.CompleteRequest();这将结束对请求的所有进一步处理。您的处理程序不是管道中唯一的处理程序,因此这将取消您之后的其他处理程序的进一步处理,并将响应立即发送给客户端。

HttpApplication.CompleteRequest Method