温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ASP.NET虚拟文件系统的作用

发布时间:2021-09-18 02:00:54 阅读:158 作者:chen 栏目:编程语言

这篇文章主要讲解了“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虚拟文件系统的作用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI