我正在使用IIS 5.1,其中我们只有一个默认网站

我有两个项目v2和v3

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

在两个项目的主页中我有

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

但这显示了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"/>
.

其他提示

使用相对URL。查看这里 e。页面“http://v2/default.html”中的“图像/ 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"/> 但是,不幸的副作用是您无法在网站目录结构中移动您的主页,而不会破坏链接。

我很好奇,但为什么你会选择这种设置?只需更容易制作一个网站并将其放在与v2一样的目录级别上?

你的帖子中缺少一些东西,你能发布吗?

您可以使用相对曲线

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

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

也许可以使用HttpRuntime.AppDomainAppVirtualPathRequest.ApplicationPath

太生古代替代代码是有用的。

我的虚拟目录的使用样本 / v2

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

回顾 system.wirtualpateUtility 类和方法(.NET 2.0及更高版本)

http://msdn.microsoft.com/zh-美国/库/ system.wirtualpateutility.aspx

回顾 system.web.httpRequest 对象

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top