使用 http 模块或 http 处理程序拦截 C# 中的文件下载?

Intercept a file download in C# using either an http module or http handler?

从 IIS 7.5 服务器上的 ASP.NET / C# Web 应用程序 运行 下载文件时,如何拦截响应中正在下载的 pdf 文件?响应具有 application/pdfContent-Type10091Content-Length

目前我写了一个 HttpModule 覆盖方法:

public void Init(HttpApplication context){
   context.BeginRequest+=Context_BeginRequest();
   context.EndRequest+=Context_EndRequest();

}

private void Begin_Request(Object sender, EventArgs e){
   // this function does not get called when downloading a file!
}


private void End_Request(Object sender, EventArgs e){
   // this function does not get called when downloading a file!
}

我需要覆盖哪个函数才能拦截文件下载响应?

web.config 看起来像:

<system.webServer>
<modules runallManagedModulesForAllRequests="true">

    <add name="MyMod.Module" type="MyMod.Module"/>
</modules>

</system.webServer>

您没有在 web.config 中显示您是如何注册该模块的,但如果它看起来像这样:

<system.webServer>
  <modules>
    <add name="mymodule" type="typename, assemblyname" preCondition="managedHandler" />
  </modules>
</system.webServer>

那么你只需要删除前提条件属性。否则,您的模块将不会被静态文件调用(以及任何其他可能不会调用托管管道的内容)。