【问题标题】:IIS 7.5 hierarchy breaks application pathIIS 7.5 层次结构破坏了应用程序路径
【发布时间】:2012-10-02 15:40:31
【问题描述】:

我使用来自 IIS.Net - Understanding Site, Applications and Virtual Directories 的信息在网站下设置了一个 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 中解决这个问题?

【问题讨论】:

    标签: asp.net-mvc-3 iis-7.5


    【解决方案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" />
    

    所有内容都会自动转换为正确的路径。实际上this blog post 似乎记录了这种能力。

    但除此之外,&lt;img src="/path/to/image.png" alt="smiley face" /&gt; 总是会引用 http(s)://(current server)/path/to/image.png,除非 html 在浏览器中看到之前被重写

    【讨论】:

    • 很高兴了解 MVC4/razor 2。可惜我不能在这个项目中使用它。但是从你和@gromer 看来,我正在使用的解决方法似乎是要走的路。谢谢。
    【解决方案2】:

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

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

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

    【讨论】:

    • 谢谢。我想确保这是一个可以接受的解决方法(如果有的话)。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      相关资源
      最近更新 更多