成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET虛擬文件系統(tǒng)

開發(fā) 后端
本文以一個例子來說明ASP.NET虛擬文件系統(tǒng)的使用,要實現(xiàn)的功能場景描述,以及介紹開發(fā)web用戶控件和開發(fā)一個虛擬文件系統(tǒng)提供類。

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

本文以一個例子來說明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)中注冊這個類,然后在每訪問一個文件/資源的時候會自動調用這個類,在這個類中判斷文件的路徑是否是我們定義的,如果是就用我們的邏輯來處理,即從dll中取出資源。

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

 

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

【編輯推薦】

  1. 淺析ASP.NET中配置文件
  2. .NET RIA Services就像ASP.NET那樣方便
  3. ASP.NET AJAX Extensions中UpdatePanel控件概述
  4. ASP.NET調用UpdatePanel的Update()方法
  5. 淺談ASP.NET AJAX的WCF服務
責任編輯:佚名 來源: IT專家網
相關推薦

2020-07-22 14:53:06

Linux系統(tǒng)虛擬文件

2009-07-27 15:51:49

ASP.NET虛擬主機

2019-09-20 10:04:45

Linux系統(tǒng)虛擬文件

2018-08-24 10:10:25

Linux文件系統(tǒng)技術

2019-05-29 16:33:32

Linux虛擬系統(tǒng)

2019-05-22 09:00:16

Linux虛擬文件系統(tǒng)

2023-12-06 09:32:35

Linux系統(tǒng)

2024-02-02 10:38:06

虛擬文件系統(tǒng)VFS

2020-10-12 17:40:44

lsofLinux虛擬文件

2025-03-28 09:19:11

2022-04-21 14:09:17

lsofLinux虛擬文件

2010-03-02 14:21:30

Linux操作系統(tǒng)

2017-02-06 16:18:57

微軟GitGVFS

2009-07-22 17:45:35

ASP.NET教程

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2019-06-14 14:58:58

虛擬文件系統(tǒng)Linux

2009-07-21 15:34:32

ASP.NET 2.0

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入門教程

2009-07-21 15:38:31

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品美女一区二区 | 亚洲高清视频一区二区 | 色吧综合网 | 91看片在线 | 国产欧美视频一区 | 91成人免费看片 | 一区二区三区av | 中文字幕日韩欧美 | 久久九九免费 | 亚洲精品一区中文字幕乱码 | 蜜桃av人人夜夜澡人人爽 | 午夜精品一区二区三区在线视频 | 小早川怜子xxxxaⅴ在线 | 日韩在线精品视频 | 久久久国产精品 | 日韩av网址在线观看 | 国产精品1 | 日本a v在线播放 | 美女视频三区 | 五月婷婷丁香 | 新疆少妇videos高潮 | 亚洲视频中文字幕 | 天天干视频网 | 欧美一级片在线看 | 成人国产午夜在线观看 | 久久久久久久久久久久久9999 | 欧美xxxx黑人又粗又长 | 精品免费国产一区二区三区四区介绍 | 久久久久久久国产精品 | 韩国av网站在线观看 | 一区二区三区亚洲视频 | 免费在线观看黄网站 | 国产亚洲精品成人av久久ww | 啪啪综合网 | 日韩在线欧美 | 日本网站免费观看 | 亚洲午夜精品一区二区三区他趣 | 日本91av视频 | 久久久激情视频 | 中文字幕电影在线观看 | 天天插天天射天天干 |