0

我已经使用来自IIS.Net的信息在网站下设置了一个 Web 应用程序- 了解站点、应用程序和虚拟目录

以下是他们对申请的看法。

应用程序是一组通过协议(例如 HTTP)传递内容或提供服务的文件。在 IIS 中创建应用程序时,应用程序的路径将成为站点 URL 的一部分。

那太棒了; 正是我想要的;但是...对于脚本文件、css 和我在应用程序中的 Web 服务,应用程序路径无法正确解析。

为了http://site_name/application_name

<img src="/Content/images/smiley.png" alt="smiley face" /></a>

解决为

src="/site_name/Content/images/smiley.png"

代替

src="/application_name/Content/images/smiley.png"

作为一种解决方法,我已经用@Url.Content()助手包裹了我正在使用的路径。不是最漂亮的解决方案,但它正在工作。

<img src="@Url.Content("~/Content/images/smiley.png")" alt="smiley face" /></a>

有没有办法在 IIS 中解决这个问题?

4

3 回答 3

1

这不是 IIS 问题,这是您必须在模板方面做的事情。现在,我不确定,但在 asp.net mvc4/razor 2 中可能有一些额外的魔法可以让你代替

<img src="@Url.Content("~/Content/images/smiley.png")" alt="smiley face" />

<img src="~/Content/images/smiley.png" alt="smiley face" />

一切都会自动转换到正确的路径。实际上,这篇博文似乎记录了这种能力。

但除此之外,<img src="/path/to/image.png" alt="smiley face" />总是要引用http(s)://(current server)/path/to/image.png,除非在浏览器中看到之前以某种方式重写了 html。

于 2012-10-02T16:17:38.527 回答
0

在 IMO 中使用@Url.Content是正确的方法。然后,无论开发人员在他们的机器上如何设置(运行开发服务器或使用 IIS),它都会使链接正常工作。

我不确定是否有办法在 IIS 中处理它,也许是 URL 重写规则,但它无助于跨开发机器的一致性。

编辑:您可以将站点部署到 IIS 中站点的根目录,而不是虚拟目录,但这只是一个很好的解决方案,如果您只打算托管这个单个站点。

于 2012-10-02T15:44:03.453 回答
0

在“head”部分添加这个“base”标签:<base href="~/" target="_blank" />. 我的锚元素也有同样的问题。

于 2014-06-26T17:00:20.453 回答