IIS 主目录与虚拟目录 冲突

时间:2022-08-28 12:24:44
iis下 的主目录有一个网站,还有用虚拟目录建立了一个网站,由于主目录的网站不能使用虚拟目录,所以只能放主目录下,不然会不好用。
但是这样的话就会与虚拟目录的网站冲突,导致虚拟目录的网站不好用,网站都是.net1.1的,并且用到了微软2003的树控件。
请问有谁知道这个问题怎么解决?

7 个解决方案

#1


实在不是很清楚你说的意思。
比方说你的主目录(DefaultWebSite)和虚拟目录(VD1)结构如下:

-DefaultWebSite
       |
        ----VD1
其实DefaultWebsite是一个网站,VD1也是一个网站。如果把DefaultWebSite直接指向到VD1所在的目录(文件系统),那么你的描述是“由于主目录的网站不能使用虚拟目录”。这种情况下怎么就不能使用虚拟目录了?不理解你的意思。

如果按照图示的结构的话,你好像又说会与虚拟目录的网站冲突,到底是什么样的冲突呢?

请你务必把问题描述清楚一点,这样大家才能帮你啊。

#2


我的网站是mysite,放在E:\mysite文件夹下,在D盘下还有个网站D:\abc

abc是用虚拟目录建的

mysite是直接把IIS的默认网站-》属性-》主目录改为E:\mysite而指向它的,这样在浏览器中就可以直接使用ip来访问mysite这个网站了

而虚拟目录建的abc网站就必须用ip加上虚拟目录名才能浏览,如http://127.0.0.1/abc

mysite不能使用虚拟目录的原因是用了一个activeX控件,在里面写死了,在里面得到的是主机的ip,这样如果用虚拟目录的话得不到http://127.0.0.1/mysite这样的路径(网站程序需要得到host的路径),所以只能放在主目录下,这样得到的ip跟路径是一致的,都是http://127.0.0.1/

但设好主目录后,abc就不好用了,提示找不到相应路径下的文件

而将默认网站-》属性-》主目录设为初始值,abc这个网站又好用了

有谁知道是什么原因吗?

#3


先设置好主目录
然后在IIS Manager里面找到你的虚拟目录abc,右键点击选择"Properties",把路径重新定义一下,指向到D:\abc

如果还是不能用,请你把%win_root%\system32\inetsrv\Metabase.xml里面相关的配置项贴出来
<IIsWebVirtualDir Location="/LM/W3SVC/1/ROOT/abc"
....
....
</IIsWebVirtualDir>

#4



虚拟目录abc的路径还是D:\abc ,不可能由于主目录指向了E:\mysite,它就跟着指向了E:\mysite

#5


那么,麻烦您把配置文件里面的相关内容贴一下好吗?谢谢!
还有,IE报错信息最好也贴一下,谢谢。

#6


利用配置文件的配置节可以让它不继承父目录的配置文件,如下

<location path="." allowOverride="false" inheritInChildApplications="false"> </location>

把它加在父目录的<system.web>节外面即可,测试一下果然如此,甚喜,虽记之以备忘,同时也于大伙共享!

下面是更好的一个:

 
虚拟目录中的web.config继承了主目录中的web.config出现问题是由于根目录中的web.config添加了httphandler、 httpmodule 引起的。
解决办法:将 httphandler httpmodule的声明添加到location中。
如下所示:
<location path="." allowOverride="true" inheritInChildApplications="false">
<system.web>
<httpModules>
<add name="UrlRewriteModule"
type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
</httpModules>
</system.web>
</location>

path 不用说指定的是一个目录
allowOverride 指是否可以将这个重写
inheritInChildApplications 指是否被子级应用程序继承
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
以上试过了,可用

#7


十分感谢!正需要呢!

#1


实在不是很清楚你说的意思。
比方说你的主目录(DefaultWebSite)和虚拟目录(VD1)结构如下:

-DefaultWebSite
       |
        ----VD1
其实DefaultWebsite是一个网站,VD1也是一个网站。如果把DefaultWebSite直接指向到VD1所在的目录(文件系统),那么你的描述是“由于主目录的网站不能使用虚拟目录”。这种情况下怎么就不能使用虚拟目录了?不理解你的意思。

如果按照图示的结构的话,你好像又说会与虚拟目录的网站冲突,到底是什么样的冲突呢?

请你务必把问题描述清楚一点,这样大家才能帮你啊。

#2


我的网站是mysite,放在E:\mysite文件夹下,在D盘下还有个网站D:\abc

abc是用虚拟目录建的

mysite是直接把IIS的默认网站-》属性-》主目录改为E:\mysite而指向它的,这样在浏览器中就可以直接使用ip来访问mysite这个网站了

而虚拟目录建的abc网站就必须用ip加上虚拟目录名才能浏览,如http://127.0.0.1/abc

mysite不能使用虚拟目录的原因是用了一个activeX控件,在里面写死了,在里面得到的是主机的ip,这样如果用虚拟目录的话得不到http://127.0.0.1/mysite这样的路径(网站程序需要得到host的路径),所以只能放在主目录下,这样得到的ip跟路径是一致的,都是http://127.0.0.1/

但设好主目录后,abc就不好用了,提示找不到相应路径下的文件

而将默认网站-》属性-》主目录设为初始值,abc这个网站又好用了

有谁知道是什么原因吗?

#3


先设置好主目录
然后在IIS Manager里面找到你的虚拟目录abc,右键点击选择"Properties",把路径重新定义一下,指向到D:\abc

如果还是不能用,请你把%win_root%\system32\inetsrv\Metabase.xml里面相关的配置项贴出来
<IIsWebVirtualDir Location="/LM/W3SVC/1/ROOT/abc"
....
....
</IIsWebVirtualDir>

#4



虚拟目录abc的路径还是D:\abc ,不可能由于主目录指向了E:\mysite,它就跟着指向了E:\mysite

#5


那么,麻烦您把配置文件里面的相关内容贴一下好吗?谢谢!
还有,IE报错信息最好也贴一下,谢谢。

#6


利用配置文件的配置节可以让它不继承父目录的配置文件,如下

<location path="." allowOverride="false" inheritInChildApplications="false"> </location>

把它加在父目录的<system.web>节外面即可,测试一下果然如此,甚喜,虽记之以备忘,同时也于大伙共享!

下面是更好的一个:

 
虚拟目录中的web.config继承了主目录中的web.config出现问题是由于根目录中的web.config添加了httphandler、 httpmodule 引起的。
解决办法:将 httphandler httpmodule的声明添加到location中。
如下所示:
<location path="." allowOverride="true" inheritInChildApplications="false">
<system.web>
<httpModules>
<add name="UrlRewriteModule"
type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
</httpModules>
</system.web>
</location>

path 不用说指定的是一个目录
allowOverride 指是否可以将这个重写
inheritInChildApplications 指是否被子级应用程序继承
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
以上试过了,可用

#7


十分感谢!正需要呢!