如何解析.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 SiteSubsite1Subsite2分别是为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正在应答的任何域一起使用。

http://parentsite.com/assets

http://childsite.com/assets

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。