如何解析 .NET 中同一父 IIS 虚拟目录中不同站点的绝对 URL
本文关键字:站点 URL 虚拟 NET 何解析 IIS | 更新日期: 2023-09-27 18:33:36
我的目标是在多个网站之间共享图像,css,js等,这些网站都托管在IIS中的同一父虚拟目录下。当然,我可以对图像路径进行硬编码,但我希望 .NET 有一种可以使用 IIS 配置智能解析 URL 的方法。
这是我的文件/虚拟目录结构:
Parent Site (Virtual Directory) default.aspx mypage.aspx otherpage.aspx images - logo.jpg css - site.css Subsite1 (Virtual Directory) - default.aspx - products.aspx Subsite2 (Virtual Directory) - default.aspx - products.aspx - miscellaneous.aspx
Parent Site
、Subsite1
和 Subsite2
都是分别为 http://parentsite.com、http://subsite1.com 和 http://subsite2.com 设置的虚拟目录。我想在这些网站上共享图像,js,css等。
.NET 中是否有一种方法可以在从其中一个子网站(例如 http://subsite.com/default.aspx)调用时将~/images/logo.jpg
解析为 http://parentsite.com/images/logo.jpg?
在 IIS6 甚至 IIS7 中,您可以在所有子站点中使用新的虚拟目录,称为"资产"。
更新的网站布局:
Parent Site (Virtual Directory)
default.aspx
mypage.aspx
otherpage.aspx
assets
-images
- logo.jpg
-css
- site.css
Subsite1 (Virtual Directory)
- default.aspx
- products.aspx
assets (Virtual Directory to parent assets)
Subsite2 (Virtual Directory)
- default.aspx
- products.aspx
- miscellaneous.aspx
assets (Virtual Directory to parent assets)
使用此结构,您可以与所有站点共享相同的"assets"文件夹,并且仍然可以将其作为"~/assets"访问。这允许您将资产与 IIS 应答的任何域一起使用。
http://parentsite.com/assets
http://childsite.com/assets
CDN 是一个不错的选择,但通常您会为每个站点(如 http://cdn.parentsite.com 和 http://cdn.childsite.com)创建单独的 DNS 输入,然后创建一些函数来引用文件作为 http://cdn。(当前域)。
在我看来,使用共享资产文件夹的绝对或相对路径将使您的生活更轻松。
创建一个cdn
子域并将资源文件指向该子域,例如
http://cdn.parentsite.com/images/logo.jpg
http://cdn.parentsite.com/css/site.css
等。。
此~/images/logo.jpg
永远不会解析为应用程序根目录以外的任何内容。这就是~
的重点.
一种选择是创建具有共享映像的 resources.site.com 或将其移动到CDN。
然后,在使用这些资源的每个站点中,资源所在的位置都有一个配置设置。 这些网站使用配置设置资源的完全限定 URL 的格式。
由于您在代码中抽象出了 resources.site.com,因此它可能在同一台服务器上、不同的服务器上、在 CDN 中等......没关系 - 您可以灵活地为他们提供服务。 您也可以在同一台服务器上从它开始,当您想要针对地理位置进行优化时,请将其移动到 CDN。