虚拟目录根目录与默认网站根目录

时间:2011-02-11 12:02:47

标签: asp.net virtual-directory iis-5

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

我有两个项目v2和v3

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

在我有两个项目的主页上

  

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

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

5 个答案:

答案 0 :(得分:4)

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

public static string GetAppRootUrl(bool endSlash) { 
   string host = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority);
   string appRootUrl = HttpContext.Current.Request.ApplicationPath;
   if (!appRootUrl.EndsWith("/")) //a virtual
   {
       appRootUrl += "/";
   }
   if (!endSlash)
   {
       appRootUrl = appRootUrl.Substring(0, appRootUrl.Length - 1);
   }
   return host + appRootUrl;
}

所以,你可以写在你的页面中:

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

答案 1 :(得分:1)

您的帖子中缺少某些内容,可以发帖吗?

您可以使用相对路径

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

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

答案 2 :(得分:1)

使用相对网址。见here,例如页面“http://v2/default.html”中的“images / bg.jpg”将指向“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相同的目录级别上会不会更容易?

答案 3 :(得分:1)

也许您可以使用HttpRuntime.AppDomainAppVirtualPathRequest.ApplicationPath

Page.ResolveUrl("~")非常有用。

  

我的虚拟目录 / v2

的使用示例
    HttpRuntime.AppDomainAppVirtualPath = /v2
    Request.ApplicationPath = /v2
    Request.FilePath = /v2/Inicio.aspx
    GetAppRootUrl(false) = http://localhost:2029/v2
    Page.ResolveUrl("~") = /v2/

答案 4 :(得分:0)

查看 System.Web.VirtualPathUtility 类&amp;方法(.Net 2.0及更高版本)

http://msdn.microsoft.com/en-us/library/system.web.virtualpathutility.aspx

查看 System.Web.HttpRequest 对象

http://msdn.microsoft.com/en-us/library/system.web.httprequest.filepath(v=vs.100).aspx

Public Function GetRoot() As String
    Return System.Web.VirtualPathUtility.MakeRelative(Request.FilePath, Request.ApplicationPath)
End Function