IIS 7 Web站点下的Web应用程序中的相对路径

时间:2013-12-13 19:07:08

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

有没有办法强制网站下的网络应用程序中的“路径”解析应用程序下的实际路径,而不是网站?

我是新手所以我无法上传我正在谈论的图片,但看看你是否可以直观地看到我的IIS设置:

IIS 7.0
----MAIN WEB SITE:
    ----Web App #1
    ----Web App #2

每个网络应用都有自己的CSS,指向自己的图像;例如,在Web App#1中:

background-image: url(images/someimage.png)

问题是,由于网络应用程序安装在主站点下,“images / someimage.png”解析为主站点的图像文件夹,而不是Web应用程序#1。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

先试试

There is something about "Paths" for Asp.net beginners

更新(因为我也在努力):

除了MapPath背后的代码(“〜/ ...”),我的焦点只来自HTML / CSS路径分辨率

我注意到我们是否在讨论HTML

<img src="/images/x.jpg" />  this will work only from  

IIS 7.0
----MAIN WEB SITE

“images”前面的斜杠“/”将被解释为“go to root”

修复

IIS 7.0
----MAIN WEB SITE
    ----Web App #1

删除“/”以便<img src="images/x.jpg" />当托管为网站并托管为网络应用时,这对两者都有效

现在CSS很棘手不同的方式,我很惊讶使用你的例子它不起作用,因为图像前面没有斜线。

考虑基于您的expample的结构

IIS 7.0
----MAIN WEB SITE:
    ----Web App #1
        ----styles
        ----images

你的CSS

background-image: url(images/someimage.png)

告诉浏览器查找MAIN WEB SITE/Web App #1/styles/images/someimage.png

添加“/”background-image: url(/images/someimage.png)

结果为MAIN WEB SITE/images/someimage.png

现在添加“../”background-image: url(../images/someimage.png)

结果为MAIN WEB SITE/Web App #1/images/someimage.png

(好像解决了一级,然后转到图像)

好的部分是,一旦你更改了这些前缀以使其作为Web应用程序运行,即使在您需要这样做的情况下作为实际网站托管,它似乎也可以工作

IIS 7.0
----MAIN WEB SITE (web app #1):
    ----styles
    ----images

[对不起,如果这个答案不够描述或不整齐,我会在有人提议时添加编辑,或者我自己会发现错误,通常是firefox / chrome F12并查看资源路径]

答案 1 :(得分:0)

我添加“runat =”server“”。 像这样:

<a href="~/Default.aspx" runat="server">Home</a>