我的目标是在多个网站都在IIS的同一父虚拟目录下托管的共享图像,CSS,JS等。 当然,我可以硬编码图片的路径,但我希望.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中的一个方法,将解决~/images/logo.jpg
作为http://parentsite.com/images/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)
有了这个结构,你可以分享所有网站相同的“资产”文件夹,仍然可以访问它作为“〜/资产”。 这使您可以与任何IIS接听的站点上使用的资产。
http://parentsite.com/assets
http://childsite.com/assets
一个CDN是一个不错的选择,但是很多时候,你会为每个站点如创建单独的DNS enteries http://cdn.parentsite.com和http://cdn.childsite.com ,然后创建一些功能来引用文件作为HTTP: //cdn.(currentdomain )。
在我看来,使用到共享文件夹资产的绝对或相对路径会令您的生活更轻松。
你应该创建一个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。
文章来源: How do I resolve absolute URLs for different sites in the same parent IIS virtual directory in .NET?