Asp.net 虚拟目录根与默认网站根

Asp.net 虚拟目录根与默认网站根,asp.net,virtual-directory,iis-5,Asp.net,Virtual Directory,Iis 5,我使用的是iis 5.1,其中只有一个默认网站 我有两个项目v2和v3 我的网站指向v2项目,并有一些文件夹、图片、样式等 现在,我在这个网站下有一个虚拟目录,它承载着项目v3,并且具有与v2相同的文件夹层次结构 在我的两个项目的主页上 img src=“\images\edlogo.gif”alt=“logo”/ 但是这显示了v2目录中的同一个图像,如何为这两个项目显示不同的图像。 使用“\”获取网站的根目录,但如何获取该网站下虚拟目录的根目录您的帖子中缺少一些内容,请发布它好吗 您可以使用相

我使用的是iis 5.1,其中只有一个默认网站

我有两个项目v2和v3

我的网站指向v2项目,并有一些文件夹、图片、样式等 现在,我在这个网站下有一个虚拟目录,它承载着项目v3,并且具有与v2相同的文件夹层次结构

在我的两个项目的主页上

img src=“\images\edlogo.gif”alt=“logo”/

但是这显示了v2目录中的同一个图像,如何为这两个项目显示不同的图像。
使用“\”获取网站的根目录,但如何获取该网站下虚拟目录的根目录

您的帖子中缺少一些内容,请发布它好吗

您可以使用相对路径

 <img src="../images/edlogo.gif" alt="logo"/>

您的代码示例将始终从根目录获取。

使用相对URL。例如,请参见页面中的“images/bg.jpg”http://v2/default.html“将指向”http://v2/images/bg.jpg“而页面中的代码相同”http://v2/v3/default.html“将指向”http://v2/v3/images/bg.jpg"

因此,您的代码变成:

img src=“images\edlogo.gif”alt=“logo”/>

然而,一个不幸的副作用是,你不能在网站目录结构中移动你的主页而不破坏链接


但是我很好奇为什么你会选择这种设置?让v3成为网站并将其置于与v2相同的目录级别不是更容易吗?

此静态方法将返回应用程序根文件夹(网站或虚拟目录)的完整http路径

因此,您可以在页面中写入:

<img src="<%= Server.HtmlEncode(GetAppRootUrl(false)) %>/images/edlogo.gif" alt="logo"/>
/images/edlogo.gif“alt=”logo“/>

查看System.Web.virtualPath实用性类和方法(.Net 2.0及更高版本)

查看System.Web.HttpRequest对象


也许您可以使用
HttpRuntime.AppDomainAppVirtualPath
Request.ApplicationPath

页面了。ResolveUrl(“~”
很有用

我的虚拟目录的使用示例/v2


然而,我很好奇为什么你会选择这种类型的设置?仅仅把一个v3作为一个网站,并把它放在与v2相同的目录级别,不是更容易吗?这样我就不能在bin folderi中有多个web.config和相同名称的dll。我已经使用\链接开发了整个网站,因为我想直接将它部署为一个website,但现在我必须在虚拟目录中部署它,那么我现在能做什么呢?好吧,如果你真的必须在虚拟目录中部署它,你可以使用。在V3项目中放置一个web.config文件,并使用重写规则,以便URL指向V3项目中的文件,而不是V2项目中的文件。但是,这是一个黑客攻击,因为你的所有URL都是st错了。你只会在浏览器使用URL时将它们重定向到正确的文件。全局查找和替换(可能使用一些正则表达式)不是选项吗?它是否适用于
a href=“”
?我认为
不一样。
runat=server
的行为可能与
src=“
不一样?
<img src="<%= Server.HtmlEncode(GetAppRootUrl(false)) %>/images/edlogo.gif" alt="logo"/>
Public Function GetRoot() As String
    Return System.Web.VirtualPathUtility.MakeRelative(Request.FilePath, Request.ApplicationPath)
End Function
    HttpRuntime.AppDomainAppVirtualPath = /v2
    Request.ApplicationPath = /v2
    Request.FilePath = /v2/Inicio.aspx
    GetAppRootUrl(false) = http://localhost:2029/v2
    Page.ResolveUrl("~") = /v2/