日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
ASP.NET虛擬文件系統(tǒng)

在Asp.Net的開發(fā)過程中頁面文件等都是放在當前網(wǎng)站目錄下的,其實我們可以利用.Net2.0新增的ASP.NET虛擬文件系統(tǒng)(VirtualPathProvider)將頁面、圖片等信息保存到數(shù)據(jù)庫或其他目錄中去,達到靈活配置。

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、成都網(wǎng)站設計與策劃設計,儀征網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設十年,網(wǎng)設計領(lǐng)域的專業(yè)建站公司;建站業(yè)務涵蓋:儀征等地區(qū)。儀征做網(wǎng)站價格咨詢:18982081108

本文以一個例子來說明ASP.NET虛擬文件系統(tǒng)的使用,要實現(xiàn)的功能場景描述如下:
以前開發(fā)Asp.Net的web用戶控件時,需要把用戶控件和當前項目作為同一個項目時才能正常使用,而且發(fā)布時需要把dll文件和所有的ascx文件都發(fā)布才能使用;另外也不方便作為公用類給其他人使用
ASP.NET虛擬文件系統(tǒng)后可以把ascx文件作為資源打包到dll中,下次只要有這個dll就可以使用了,不需要ascx文件,很方便。

具體實現(xiàn)步驟如下:

一、開發(fā)web用戶控件

這一步和以前的開發(fā)沒有區(qū)別。
1、首先新建一個web應用程序(需要VS2005 sp1支持)
2、然后在里面開發(fā)幾個web用戶控件
3、在ascx文件上右鍵-〉屬性-〉生成操作選擇嵌入的資源
4、生成dll就可以了(dll的名字為:Test.Control.dll,后面會用到)

二、開發(fā)一個虛擬文件系統(tǒng)提供類

這一步是最重要的一步。

具體思路就是:在系統(tǒng)中注冊這個類,然后在每訪問一個文件/資源的時候會自動調(diào)用這個類,在這個類中判斷文件的路徑是否是我們定義的,如果是就用我們的邏輯來處理,即從dll中取出資源。

首先把類的代碼貼出來,我想可能許多人應該和我一樣,喜歡直接先看代碼:

 
 
 
  1. DllVirtualPathProvider
  2. public class DllVirtualPathProvider : System.Web.Hosting.VirtualPathProvider
  3. {
  4. public DllVirtualPathProvider()
  5. {
  6. }
  7. public override string CombineVirtualPaths(string basePath, string relativePath)
  8. {
  9. if (IsAppResourcePath(basePath))
  10. {
  11. return null;  
  12. }
  13. return Previous.CombineVirtualPaths(basePath, relativePath);  
  14. }
  15. public override System.Runtime.Remoting.ObjRef CreateObjRef(Type requestedType)
  16. {
  17. return Previous.CreateObjRef(requestedType);  
  18. }
  19. public override bool DirectoryExists(string virtualDir)
  20. {
  21. if (IsAppResourcePath(virtualDir))
  22. {
  23. return true;  
  24. }
  25. else
  26. {
  27. return Previous.DirectoryExists(virtualDir);  
  28. }
  29. }
  30. public override string GetCacheKey(string virtualPath)
  31. {
  32. if (IsAppResourcePath(virtualPath))
  33. {
  34. return null;  
  35. }
  36. else
  37. {
  38. return Previous.GetCacheKey(virtualPath);  
  39. }
  40. }
  41. public override string GetFileHash(string virtualPath, 
    IEnumerable virtualPathDependencies)
  42. {
  43. if (IsAppResourcePath(virtualPath))
  44. {
  45. return null;  
  46. }
  47. else
  48. {
  49. return Previous.GetFileHash(virtualPath, virtualPathDependencies);  
  50. }
  51. }
  52. private bool IsAppResourcePath(string virtualPath)
  53. {
  54. String checkPath = VirtualPathUtility.ToAppRelative(virtualPath);  
  55. return checkPath.StartsWith("~/MyUserControl/Test.Control.dll/", 
    StringComparison.InvariantCultureIgnoreCase);  
  56. }
  57. public override bool FileExists(string virtualPath)
  58. {
  59. return (IsAppResourcePath(virtualPath) || Previous.FileExists(virtualPath));  
  60. }
  61. public override VirtualFile GetFile(string virtualPath)
  62. {
  63. if (IsAppResourcePath(virtualPath))
  64. {
  65. return new AssemblyResourceVirtualFile(virtualPath);  
  66. }
  67. else
  68. {
  69. return Previous.GetFile(virtualPath);  
  70. }
  71. }
  72. public override System.Web.Caching.CacheDependency GetCacheDependency(string virtualPath,
  73. System.Collections.IEnumerable virtualPathDependencies, DateTime utcStart)
  74. {
  75. if (IsAppResourcePath(virtualPath))
  76. {
  77. string path = HttpRuntime.AppDomainAppPath + virtualPath.Substring(1);  
  78. return new System.Web.Caching.CacheDependency(path);  
  79. }
  80. else
  81. {
  82. return Previous.GetCacheDependency(virtualPath, virtualPathDependencies, utcStart);  
  83. }
  84. }
  85. }

新聞標題:ASP.NET虛擬文件系統(tǒng)
鏈接URL:http://www.5511xx.com/article/ccchhij.html