ControlBuilderInterceptor 类

ControlBuilderInterceptor 类允许自定义或控制编译过程。

语法

internal class ControlBuilderInterceptor

警告

ControlBuilderInterceptor 类是内部类,不应直接在代码中使用。

如“备注”部分所述,可以检查此类型的存在,以确定是否存在拦截器类型支持。 Microsoft在任何情况下都不支持在生产应用程序中使用此类的任何其他用法。

言论

在 .NET Framework 2.0 和 .NET Framework 3.5 中,2020 年 8 月 更新添加了对使用拦截器类型自定义或控制编译过程的支持。 可以使用 Type.GetType() 来检查 ControlBuilderInterceptor 类型是否存在,可以确定此支持是否存在,如以下代码所示。

Type type = Type.GetType("System.Web.Compilation.ControlBuilderInterceptor, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");

如果返回值为非 null,则存在拦截器支持。 如果返回值 null,或者引发异常,则尚未安装 2020 年 8 月更新,并且缺少拦截器支持。

如果存在拦截器支持,则可以编写和注册与编译过程交互的侦听器类型,其方式与 ControlBuilderInterceptor 在更高版本的 .NET Framework 上完全相同。 在 .NET Framework 2.0 和 .NET Framework 3.5 中,拦截器类型可以是满足以下要求的任何类:

在 ASP.NET 应用程序设置(<appSettings>)中使用 aspnet:20ControlBuilderInterceptor 密钥注册拦截器类型。 此应用程序设置必须列在计算机或应用程序 web.config 文件中。 使用其程序集限定的类型名称指定拦截器类型。 以下示例演示如何注册名为 Fabrikam.Interceptor的拦截器类型。

<configuration>
  ...
  <appSettings>
    ...
    <add key="aspnet:20ControlBuilderInterceptor"
         value="Fabrikam.Interceptor, Fabrikam, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2b3831f2f2b744f7" />
  </appSettings>
</configuration>

若要检索类型的程序集限定名称,请使用 Type.AssemblyQualifiedName 属性,如以下代码所示。

string assemblyQualifiedName = typeof(Fabrikam.Interceptor).AssemblyQualifiedName;

如果存在拦截器支持,编译过程将按照上述方式与列出的类型进行交互。 如果缺少拦截器支持,则忽略应用程序设置,并且不起作用。

要求

命名空间: System.Web.Compilation

程序集: System.Web (System.Web.dll)

.NET Framework 版本: 3.5、2.0