2012-05-07 35 views
2

我的目标是跨多个网站共享IIS,相同的父虚拟目录下的图像,CSS,JS等。当然,我可以硬编码图像路径,但我希望.NET有一种方法可以使用IIS配置智能地解析URL。如何解决.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://parentsite.comhttp://subsite1.comhttp://subsite2.com,分别为所有虚拟目录。我想在这些网站上分享图片,js,css等。

.NET中是否存在一种方法,当从其中一个子网站(例如,http://subsite.com/default.aspx)调用时将解析~/images/logo.jpghttp://parentsite.com/images/logo.jpg

+2

.NET如何知道“subsite.com”和“parentsite.com”有什么关系?它唯一可以涉及的是当前的URI请求。也许只是创建链接到父级共享文件夹的子级虚拟目录,以便它们可以引用/资产/? –

+1

在根中创建一个文件夹,称之为资产。将所有共享资源放置在那里。在每个“虚拟目录”的内部,为引用根资产文件夹的资产创建一个新的虚拟目录。然后〜/资产将最终成为根站点的资产文件夹。 parentsite.com/assets,childsite.com/assets是同样的事情 –

+0

恕我直言,虽然这将工作CDN类型设置有更多的好处。 1)缓存! 2)[更多连接在同一时间](http://www.browserscope.org/?category=network)。 – Eonasdan

回答

3

在IIS6甚至IIS7中,您可以在所有子站点中使用新的虚拟目录,将其称为“assets”。

更新后的网站布局:

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是一个不错的选择,但是很多时候,你会为每个站点像http://cdn.parentsite.comhttp://cdn.childsite.com创建单独的DNS enteries然后创建一些功能来引用文件作为http://cdn.(currentdomain)。

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

3

您应该创建一个cdn子域并将资源文件指向该子域。

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

等。

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

1

一个选项是创建resources.site.com,它具有共享图像或将其移动到CDN。

然后,在每个使用这些资源的站点中,都有一个资源所在的配置设置。这些网站使用配置设置将完全限定的网址格式化为资源。

由于您已经在代码中提取了resources.site.com,它可能位于同一台服务器,不同服务器,CDN等中......无所谓 - 您的服务方式灵活他们了。您也可以在同一台服务器上启动它,当您想要优化地理位置时,请将其移至CDN。

相关问题