如何在IIS7中获取虚拟应用程序或虚拟目录的根目录?

时间:2011-04-22 19:22:16

标签: .net asp.net iis iis-7

我尝试在仅在客户端运行的html中使用tag。

在我的IIS7中有一个虚拟应用程序调用“testsite”。我必须调用“localhost / testsite”才能访问此站点。

假设我在“testsite / images”中有1个图像,我想从根路径获取图像。

例如:

<img src="/image/image1.jpg" />

但是在浏览器中显示的图像路径是“localhost / image”,它应该是“localhost / testsite / image”。 ?

我该怎么办?如何配置IIS7以使他们看到虚拟应用程序成为该网站的根目录?

附加:假设我的HTML在数据库中并且有很多

<img src=/image/[imagename]>

我通过将其添加到控件的Text属性来显示此文本,因此它不能在img标记中使用runat =“server”。

在我的数据库中替换img标记的src属性并在其中显示ASP.Net页面的最佳解决方案是什么。

3 个答案:

答案 0 :(得分:2)

您可以尝试:

<img src="<%=Page.ResolveUrl("~")%>/image/image1.jpg" />

(假设您使用的是ASP.NET)

答案 1 :(得分:1)

使用~/指向Web应用程序的根目录。这仅适用于服务器端控件 - 因此您需要将图片标记更改为:

<img src="~/image/image.jpg" runat="server" />

或者,只需输出属性中的值:

<img src="<%:Page.ResolveUrl("~/")%>image/image.jpg" />

更新

由于您在文字控件中输出,因此在设置控件的Page.ResolveUrl("~/")属性时可以使用Text,类似于我所显示的替代属性。

答案 2 :(得分:0)

正如我可以看到您正在使用HTML标记,更简洁的方法是在页面的head部分使用基本标记。因此,您不需要在每个html标记中重复服务器代码。

<base href="<%= Context.Items["baseURL"] %>" />,我正在从web.config阅读此内容。

<base href="<%=Page.ResolveUrl("~")%>" />

现在您可以简单地使用<img src="/image/image1.jpg" />

我怀疑当网站托管在子目录中时,Page.ResolveUrl("~/")会起作用。