【问题标题】:ASP.Net MVC Application points to localhost instead of application directoryASP.Net MVC 应用程序指向 localhost 而不是应用程序目录
【发布时间】:2009-11-12 14:04:35
【问题描述】:

您好,我正在 Win7 上的 IIS 上部署 MVC 应用程序。我已经将它部署在 localhost/appPortal 上。 appPortal 被配置为应用程序而不是虚拟目录。不幸的是,MVC 中的应用程序根被映射到 localhost 而不是 localhost/appPortal。这破坏了我所有指向脚本、css、图像等的链接。谁能帮助我理解为什么会发生这种情况以及如何解决它?

【问题讨论】:

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


    【解决方案1】:

    有关如何创建链接的更多信息会很有趣。

    首先要检查的是应用程序是否在 IIS 中正确创建,我猜是这样。 (如果不是,您可能会从嵌套的 web.config 文件中得到错误)

    第二件事,网址应该这样创建,而不是直接创建:

    <%= Url.Content("~/yourpath/yourfile.css") %>
    

    也许这个question about Url.Content 向您展示了更多选择。查看 UrlHelperHtmlHelper 上的 MSDN 文档。

    【讨论】:

    • 实际上,该应用程序是由将其托管在其 IIS 根目录上的其他团队开发的。所有对资产的引用都使用 VS2008 在开发期间拾取的相对路径。应用程序意味着视图正确呈现,但脚本、CSS 不起作用。我需要更改参考吗?像您的解决方案一样的所有静态内容?
    • 问题是 JS 不支持 vdir。我们现在的解决方案是在从 master 调用的脚本中创建一个 JS 对象,该脚本具有具有当前 vdir 路径值的属性,即: Globals.rootPath = "/vdir/" 或 "/" 如果它是子域。为了引用 CSS 和脚本,我们使用 Url.Content。
    【解决方案2】:

    最好的解决方案是不要在您的应用程序中使用根链接(以 / 开头的链接)。您可以使用 ~/ 作为对应用程序根目录的引用。我用这样的东西

    <script src="<%=ResolveClientUrl("~/script/something.js") %>"
    

    解析为 /scripts。这样做会使您的应用程序更便携。

    【讨论】:

      【解决方案3】:

      您也可以只使用 HTML 5 文档类型和 &lt;base&gt; 标记。

      是的,我就是这么做的。

      这可能不是一个选项,所以你应该使用 Marc 所说的 URL 助手。

      【讨论】:

        猜你喜欢
        • 2018-10-02
        • 2011-01-23
        • 1970-01-01
        • 2011-03-08
        • 1970-01-01
        • 1970-01-01
        • 2015-01-05
        • 2010-09-21
        • 1970-01-01
        相关资源
        最近更新 更多