【发布时间】: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