如何解析.NET中同一父IIS虚拟目录中不同站点的绝对URL?
我的目标是在多个网站上共享图像,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: Subsite2
和http://subsite2.com设置的虚拟目录。 我想在这些网站上分享图片,js,css等。
.NET中是否有一个方法可以解析~/images/logo.jpg
作为http://sofzh.miximages.com/c%23/logo.jpg从其中一个子网点调用(例如, http : //subsite.com/default .aspx )?
在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正在应答的任何域一起使用。
CDN是一个不错的选择,但通常你会为http://cdn.parentsite.com和http://cdn.childsite.com等每个网站创建单独的DNS enteries,然后创建一些函数来引用文件为http: //cdn.(currentdomain )。
在我看来,使用共享资源文件夹的绝对或相对路径将使您的生活更轻松。
你应该创建一个cdn
子域并将资源文件指向那个例如
http://sofzh.miximages.com/c%23/logo.jpg http://sofzh.miximages.com/c%23/logo.jpg
永远不会解析为应用程序根目录之外的任何内容。 这就是~
。
一个选项是创建resources.site.com,它具有共享图像或将其移动到CDN。
然后,在消耗这些资源的每个站点中,存在资源所在的配置设置。 这些站点使用配置设置格式化资源的完全限定URL。
由于您已经在代码中抽象出了resources.site.com,它可能位于同一台服务器上,不同的服务器上,CDN中……这没关系 – 您可以灵活地为它们提供服务。 您也可以在同一台服务器上启动它,当您想要优化geo时,将其移动到CDN。