您好,登錄后才能下訂單哦!
這篇文章主要講解了“ASP.NET虛擬文件系統的作用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ASP.NET虛擬文件系統的作用”吧!
具體實現步驟如下:
一、開發web用戶控件
這一步和以前的開發沒有區別。
1、首先新建一個web應用程序(需要VS2005 sp1支持)
2、然后在里面開發幾個web用戶控件
3、在ascx文件上右鍵-〉屬性-〉生成操作選擇嵌入的資源
4、生成dll就可以了(dll的名字為:Test.Control.dll,后面會用到)
二、開發一個虛擬文件系統提供類
這一步是最重要的一步。
具體思路就是:在系統中注冊這個類,然后在每訪問一個文件/資源的時候會自動調用這個類,在這個類中判斷文件的路徑是否是我們定義的,如果是就用我們的邏輯來處理,即從dll中取出資源。
首先把類的代碼貼出來,我想可能許多人應該和我一樣,喜歡直接先看代碼:
DllVirtualPathProvider
public class DllVirtualPathProvider : System.Web.Hosting.VirtualPathProvider
{
public DllVirtualPathProvider()
{
}
public override string CombineVirtualPaths(string basePath, string relativePath)
{
if (IsAppResourcePath(basePath))
{
return null;
}
return Previous.CombineVirtualPaths(basePath, relativePath);
}
public override System.Runtime.Remoting.ObjRef CreateObjRef(Type requestedType)
{
return Previous.CreateObjRef(requestedType);
}
public override bool DirectoryExists(string virtualDir)
{
if (IsAppResourcePath(virtualDir))
{
return true;
}
else
{
return Previous.DirectoryExists(virtualDir);
}
}
public override string GetCacheKey(string virtualPath)
{
if (IsAppResourcePath(virtualPath))
{
return null;
}
else
{
return Previous.GetCacheKey(virtualPath);
}
}
public override string GetFileHash(string virtualPath,
IEnumerable virtualPathDependencies){
if (IsAppResourcePath(virtualPath))
{
return null;
}
else
{
return Previous.GetFileHash(virtualPath, virtualPathDependencies);
}
}
private bool IsAppResourcePath(string virtualPath)
{
String checkPath = VirtualPathUtility.ToAppRelative(virtualPath);
return checkPath.StartsWith("~/MyUserControl/Test.Control.dll/",
StringComparison.InvariantCultureIgnoreCase);}
public override bool FileExists(string virtualPath)
{
return (IsAppResourcePath(virtualPath) || Previous.FileExists(virtualPath));
}
public override VirtualFile GetFile(string virtualPath)
{
if (IsAppResourcePath(virtualPath))
{
return new AssemblyResourceVirtualFile(virtualPath);
}
else
{
return Previous.GetFile(virtualPath);
}
}
public override System.Web.Caching.CacheDependency GetCacheDependency(string virtualPath,
System.Collections.IEnumerable virtualPathDependencies, DateTime utcStart)
{
if (IsAppResourcePath(virtualPath))
{
string path = HttpRuntime.AppDomainAppPath + virtualPath.Substring(1);
return new System.Web.Caching.CacheDependency(path);
}
else
{
return Previous.GetCacheDependency(virtualPath, virtualPathDependencies, utcStart);
}
}
}
感謝各位的閱讀,以上就是“ASP.NET虛擬文件系統的作用”的內容了,經過本文的學習后,相信大家對ASP.NET虛擬文件系統的作用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。