【问题标题】:Select correct path for files from App Under IIS从 IIS 下的 App 中选择文件的正确路径
【发布时间】:2014-12-16 20:14:09
【问题描述】:

我继承了一个托管在 IIS 上的 .NET 应用程序。以前它在 IIS 中是它自己的站点。现在在我的开发环境中,我必须在默认网站下运行它(在生产环境中,它仍将作为自己的站点运行。

所以在 Dev 中我在加载脚本和 css 文件时遇到问题 - 所以我右键单击 Dev 中的 Default Web Site 并添加应用程序 - 调用新应用程序 - MyApp 并指向磁盘上的物理位置。

所以以前的样式表会被加载:

href="/css/folder/mystylesheet.css"

和js文件:

src="/jslib/jquery-1.9.1.js"

当应用程序在 IIS 中作为自己的站点托管并且仍然需要在生产中发生(只是不在我的开发中)时,它工作正常所以在开发中我需要更改 css 和 js,如下所示:

href="~/css/folder/mystylesheet.css" (note ~ added)

src="./jslib/jquery-1.9.1.js" (note . added)

现在默认网站下 MyApp 的 js 和 css 文件已加载。但是,我可以在 IIS 或 webconfig 中做一些简单的事情来在 Dev/Production 中轻松地打开/关闭此行为,而不是编辑加载脚本和 css 文件的所有位置 - 正如我知道的那样,在某些时候文件会被签入生产路径不正确

另一个问题是整个网站有许多相对的链接,/Link/Page.aspx 现在在默认网站下托管的 MyApp 中中断

编辑

从这个question看下面的答案

在 ASP.NET 中,很多时候您需要使用波浪号 (~) 来获取应用程序的根目录,因此您的路径看起来像 ~/stylesheets/main.css 当您指定以 / 开头的路径时,您表示服务器根目录,因此如果您的站点位于虚拟目录中,则不会考虑它,但如果该站点作为默认站点托管,则该路径将符合条件: 示例:名为 foo.net 且站点托管在名为 app /stylesheet 的虚拟目录中的服务器将转换为 foo.net/stylesheet 而不是 foo.net/app/stylesheet

我所有的路径都以 / 开头(即到服务器根目录) - 我需要弄清楚是否有一些我可以添加到 web.config 的东西,对于 Dev 可以让我指定需要考虑的虚拟应用程序 MyApp (仅适用于 Dev - 然后可以在 Web Transform for Production web.config 文件中删除它

【问题讨论】:

    标签: asp.net iis web-config


    【解决方案1】:

    简短的回答是否定的,没有一个地方可以让您处理网站的位置。这是因为您可能想要很多可能的结果,包括:

    • 站点从 IIS 根文件夹提供并​​在域的根目录访问(或不访问)
    • 从 IIS 子文件夹提供的站点并以相同路径(或不同路径)访问
    • IIS 重写规则(入站和出站),增加了公共和私有路径之间的映射层
    • 站点映射到子域、DNS 通配符映射(请求由主机名区分)等
    • 站点映射到子应用程序,继承或不继承重写规则(和其他配置)
    • 以上所有内容

    同时,还有很多地方可以与路径交互:

    • 内部物理路径,通常用于磁盘访问,通常需要映射虚拟路径
    • 内部虚拟路径
    • 内部 ASP.NET 路径,类似于虚拟路径,但它们可以是应用程序相关的(使用 ~),而 IIS 并不总是能识别这些路径
    • 面向公众的路径
    • 以上所有内容都可以是相对的或绝对的

    所以是的,这是一团糟。

    对于您的情况,最简单的事情可能是使开发环境镜像生产环境。除非您要移动实时站点,否则将所有路径引用委托给配置感知函数可能比它的价值更麻烦。

    【讨论】:

      【解决方案2】:

      添加〜以使路径相对于根目录。一个建议是将文件夹向上移动几级。或向下移动几级,以确保您的项目位于正确的目录中。希望这有效

      【讨论】:

        猜你喜欢
        • 2016-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-27
        • 1970-01-01
        • 2022-01-07
        • 1970-01-01
        相关资源
        最近更新 更多