关于虚拟目录

nearpoetry 2006-04-15 12:24:49
一直搞不清楚在文件连接的过程当中连接地址的问题,VIRTUAL="……",这个地址是否是相对于定义的站点根目录,还是相对于服务器根目录的呢?有的时候都弄糊涂了
...全文
394 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
return_more 2006-04-16
  • 打赏
  • 举报
回复
IIS是用来在本机调试动态网站的系统组件,可以看成单机上的服务器,这样你的pc机既是服务器又是客户机,无论服务器还是客户机都是以目录来组织自己的文件资源,这两者各自有自己的文件目录,在iis中设置的主目录其实就是服务器的根目录,比如设置主目录为E:\,那么,你的E盘就作为服务器的根目录了。
客户机上的任何一个文件夹,不管在何处,将其设置为虚拟目录,则这个文件夹被添加到主目录即服务器根目录的目录树中,就像你老婆是你丈母娘的女儿,跟你结婚后就成了你妈妈的儿媳妇儿,写入你家的家谱。这个比喻不恰当之处在于:你的家谱和她的家谱是不相关的,而我们所说的主目录及所设的虚拟目录都是客户机目录树(物理路径)中的一部分。


以上是查阅相关书籍之后的个人理解,你可以持怀疑的态度。

我参考的书籍是《Visual Bisic.NET程序设计经典》曹祖圣、吴名哲、黄世阳、蔡文龙、林义证编著,科学出版社。你可以借来看看。

其中的主要字段:

虚拟目录是IIS上用来定义一个web应用程序的单位,在同一个虚拟目录中,所有应用程序的状态信息可以互通。
……
例如:http://localhost/myfolder,其中myfolder是一个虚拟目录那么他的实际文件夹位置可以是D:\Data\folder,也就是说,虚拟目录不见得一定要位于主目录下。

mysqlaping 2006-04-15
  • 打赏
  • 举报
回复
网站根目录
c:\wwwroot\ = > "/"
绝对地址 <a href="/test.asp">test</a>, <a href="http://localhost/test.asp">test</a>
虚拟地址 iis中定义个虚拟目录 vir ,对应实际目录"d:\wwwroot\" ,则可以用
http://localhost/vir/test.asp,访问“d:\wwwroot\”下的test.asp
相对地址 相对于当前目录的
比如d:\wwwroot\下有2个文件和一个文件夹,一个是1.asp,一个是2.asp,文件夹是test,在1.asp中有个<a href="2.asp">2</a>,<a href="test/test文件下的文件.asp">2</a>,这个就是相对地址。
一般不用virtual,用file,你实际目录下有什么文件和文件夹就写什么样的路径
比如<!--#include file="当前目录下的文件"-->
nearpoetry 2006-04-15
  • 打赏
  • 举报
回复
好像还是有点糊涂。
是不是就是说virtual=""里面的地址其实是在前面省略了虚拟站点的目录地址。比如说,我的iis根目录使f:\site,而站点根目录是f:\site\site1,那么在site1这个站点文件夹下的文件间的连接地址如果是virtual="a.asp",那么就意味着是连到了site1下的一个a.asp文件去,就是说virtual后的地址其实是指要写在虚拟站点下的地址就可以了。是这个样子吗?

file的话,就是要写成file="site1/a.asp"对吗?
我还有个疑惑,什么是相对地址?绝对地址,虚拟地址,相对地址,virtual,file之间的关系是什么?
影子tec 2006-04-15
  • 打赏
  • 举报
回复
VIRTUAL 用IIS里的虚拟目录为路径的
FILE 一般是就是指根目录下的文件夹。

一般我比较喜欢用FILE,因为不是所有机子里面都有和你的IIS一样的虚拟目录
subasan 2006-04-15
  • 打赏
  • 举报
回复
VIRTUAL="……",这个地址是否是相对于定义的站点根目录
相对于 server.mappath("/")


有不少朋友问#include file 和 #include virtual的区别,介绍这方面的文章也有不少,在此将二者的区别再总结一下,仅供参考:
1。#include file 包含文件的相对路径,#include virtual包含文件的虚拟路径。
2。在同一个虚拟目录内,<!--#include file="file.asp"-->和<!--#include virtual="file.asp"-->效果是相同的,但假设虚拟目录名为myweb,则<!--#include virtual="myweb/file.asp"-->也可以通过调试,但我们知道<!--#include file="myweb/file.asp"-->是绝对要报错的。
3。如果一个站点下有2个虚拟目录myweb1和myweb2,myweb1下有文件file1.asp,myweb2下有文件file2.asp,如果file1.asp要调用file2.asp,那么在file1.asp中要这样写:<!--#include virtual="myweb2/file2.asp"-->,在这种情况下用#include file是无法实现的,用<!--#include file="myweb2/file2.asp"-->必然报错。相反,在myweb2的文件中包含myweb1中的文件也是一样。如果该被包含文件在某个文件夹下面,只要在虚拟路径中加上该文件夹即可。
4。不论用#include file 还是 #include virtual,在路径中用“/”还是“\”或者二者交叉使用都不会影响编译效果,程序会顺利执行。
5。以上情况不适用于2个站点文件的相互调用,而且在同一个站点内,<!--#include file="file.asp"-->和<!--#include virtual="file.asp"-->等效,但假设站点名为website,使用<!--#include virtual="website/file.asp"-->是错误的。

28,402

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧