如何解决不同网站的绝对URL在同一个父IIS虚拟目录的.NET?(How do I resolve

2019-07-29 07:12发布

我的目标是在多个网站都在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 SiteSubsite1 ,和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 )?

Answer 1:

在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 )。

在我看来,使用到共享文件夹资产的绝对或相对路径会令您的生活更轻松。



Answer 2:

你应该创建一个cdn的子域,文件指向的资源到如

http://cdn.parentsite.com/images/logo.jpg
http://cdn.parentsite.com/css/site.css

等等..

~/images/logo.jpg永远不会解决任何东西,然后其他应用程序的根目录。 这是的整点~



Answer 3:

一个选择是创建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?