我继承了IIS上托管的.NET应用程序。以前它将是IIS中自己的站点。现在在我的开发环境中,我必须在默认WebSite下运行它(在生产中它仍将作为自己的站点运行。
所以在开发中我遇到了加载脚本和css文件的问题 - 所以我右键单击Dev中的默认网站并添加应用程序 - 调用新的应用程序 - MyApp并指向磁盘上的物理位置。
所以以前的样式表已经加载了:
href="/css/folder/mystylesheet.css"
和js文件:
src="/jslib/jquery-1.9.1.js"
当应用程序作为IIS中自己的站点托管时工作正常,而且仍然需要在Production中进行(只是不在我的开发中)所以在开发中我需要更改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中断了
修改
查看下面的答案在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文件中删除它
答案 0 :(得分:1)
简短的回答是否定的,没有一个地方可以处理网站的位置。那是因为您可能需要许多可能的结果,包括:
与此同时,您可以在很多地方与路径进行交互:
~
),IIS并不总是识别所以是的,这是一团糟。
对于您的情况,最简单的事情可能是使开发环境镜像生产环境。除非您正在移动实际站点,否则将所有路径引用委派给配置感知功能可能比它的价值更麻烦。
答案 1 :(得分:0)
添加〜来创建相对于根目录的路径。一种建议是将文件夹上移几级或下移几级,以确保您的项目在正确的目录中。希望这行得通