繁体   English   中英

虚拟目录根与默认网站根

[英]Virtual Directory root vs Default web site root

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

我有两个项目v2和v3

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

在我拥有的两个项目的主页中

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

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

此静态方法将您的完整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"/>

也许您可以使用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/

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

您可以使用相对路径

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

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

使用相对网址。 参见此处,例如,“ 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相同的目录级别上会不会更容易?

查看System.Web.VirtualPathUtility类和方法(.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM