程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> VirtualPathProvider注冊的問題

VirtualPathProvider注冊的問題

編輯:關於ASP.NET

MSDN裡有描述,VirtualPathProvider只允許在兩個地方注冊:

1. App_Code目錄中任意類的AppInitialize靜態方法。

2. Global.asax中的Application_Start方法中。

而我想知道是,有沒有什麼辦法,可以將VirtualPathProvider注冊的代碼放入外部的dll中,在不需 要在App_Code和Global.asax中添加任何代碼的情況下,將VirtualPathProvider通過外部dll自動注冊。 或者,只通過web.config配置也行。

(VirtualPathProvider的作用參考: http://www.cnblogs.com/coderzh/archive/2010/01/26/Sharing-Master-Pages-By-DLL.html )

App_Code AppInitialize

在App_Code目錄裡,任意類,實現一個AppInitialize靜態方法,原型:

public static void AppInitialize()

這個方法,將會在Web應用程序初始時自動被調用。因此,考慮在外部dll中定義的AppInitialize方法 是否會被執行?

遺憾的是,AppInitialize方法必須在App_Code目錄不可。App_Code目錄是一個非常特殊的目錄,特殊 到很多規則你都不知道,ASP.NET對這個目錄的文件會做一些特殊的處理。就比如AppInitialize靜態方法 的執行規則:

1. AppInitialize靜態方法必須是在App_Code目錄下。

2. AppInitialize靜態方法在App_Code目錄下不允許被定義兩次。

如果AppInitialize在App_Code的兩個類中都有定義,比如:

public class SomeClassOne
{
     public static void AppInitialize()
     {
         HostingEnvironment.Cache["InitializationTimeOne"] = DateTime.Now;
     }
}
public class SomeClassTwo
{
     public static void AppInitialize()
     {
         HostingEnvironment.Cache["InitializationTimeTwo"] = DateTime.Now;
     }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved