zoukankan      html  css  js  c++  java
  • 使用 PreApplicationStartMethod 注册自定义的 VirtualPathProvider

    在 ASP.NET 网站中,有一些工作必须在网站初始化阶段完成,比如自定义的虚拟路径提供器,通常情况下,我们需要在 Global.asax 中进行注册,或者使用 App_Code 目录中任意类的 AppInitialize 静态方法。在 CoderZh 的 VirtualPathProvider注册的问题 中讨论了这两种方法。

     

    在 ASP.NET 4.0 中提供了一个新的特征 PreApplicationStartMethod 允许我们在上边初始化之前完成网站的初始化,这样,我们可以在一个类库项目中使用这个特征来标记需要在网站中提前初始化的方法。但是对于多个程序集的情况下,不能保证调用程序集定义的应用程序启动方法的顺序。因此,每个注册的开始方法应该将代码编写为分开运行,不应该依赖于其他注册开始方法的副作用。

    详细说明见 MSDN 的 PreApplicationStartMethodAttribute 类

     

    下面的代码演示了如何注册自定义的 VirtualPathProvider,网站项目中仅仅引用这个项目即可,不需要进行额外的配置了。

    代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 
     6 using System.Web;
     7 
     8 [assembly: PreApplicationStartMethod(typeof(MyNamespace.Class1), "Init")]
     9 
    10 namespace MyNamespace
    11 {
    12 
    13     public class DemoVirtualPathProvider : System.Web.Hosting.VirtualPathProvider
    14     {
    15     }
    16 
    17     public class Class1
    18     {
    19         public static void Init()
    20         {
    21             DemoVirtualPathProvider provider = new DemoVirtualPathProvider();
    22             System.Web.Hosting.HostingEnvironment.RegisterVirtualPathProvider(provider);
    23         }
    24     }
    25 }
    26 
  • 相关阅读:
    time 模块学习
    day 14 自定义模块,常用模块 time .datetime ,time 模块
    day 13 课后作业
    day 12 课后作业
    day 11课后作业
    树状数组最值
    hdu 1059 Dividing bitset 多重背包
    XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship
    最长公共子序列板/滚动 N^2
    Uva 10635
  • 原文地址:https://www.cnblogs.com/haogj/p/1830374.html
Copyright © 2011-2022 走看看