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

Dot*_*t98 5 asp.net-mvc routing iis-7

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

我是新手,所以我无法上传我正在谈论的图像,但看看您是否可以想象我的 IIS 设置:

IIS 7.0
----MAIN WEB SITE:
    ----Web App #1
    ----Web App #2
Run Code Online (Sandbox Code Playgroud)

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

background-image: url(images/someimage.png)
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能解决这个问题?

Paw*_*och 6

首先尝试这个

对于 Asp.net 初学者来说,有一些关于“路径”的内容

更新(因为我也在努力解决这个问题):

除了 MapPath("~/...") 背后的代码之外,我的重点仅来自路径解析的 HTML/CSS 点

我注意到如果我们谈论 HTML

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

IIS 7.0
----MAIN WEB SITE
Run Code Online (Sandbox Code Playgroud)

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

修复

IIS 7.0
----MAIN WEB SITE
    ----Web App #1
Run Code Online (Sandbox Code Playgroud)

删除“/”,这样<img src="images/x.jpg" /> 无论托管为网站还是托管为 Web 应用程序,这都适用

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

考虑基于您的示例的结构

IIS 7.0
----MAIN WEB SITE:
    ----Web App #1
        ----styles
        ----images
Run Code Online (Sandbox Code Playgroud)

你的CSS

background-image: url(images/someimage.png)
Run Code Online (Sandbox Code Playgroud)

告诉浏览器去寻找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
Run Code Online (Sandbox Code Playgroud)

[抱歉,如果这个答案描述性不够或混乱,当有人提出建议或者我自己发现错误时,我会添加编辑,通常是 firefox/chrome F12 并查看资源路径]