C# 如何解析.NET中同一父IIS虚拟目录中不同站点的绝对URL?

C# 如何解析.NET中同一父IIS虚拟目录中不同站点的绝对URL?,c#,asp.net,url,iis-6,virtual-directory,C#,Asp.net,Url,Iis 6,Virtual Directory,我的目标是跨多个网站共享图像、css、js等,这些网站都位于IIS中的同一父虚拟目录下。当然,我可以硬编码图像路径,但我希望.NET有一种方法可以使用IIS配置智能地解析URL 以下是我的文件/虚拟目录结构: 父站点、子站点1和子站点2都是分别为和设置的虚拟目录。我想在这些网站上共享图像、js、css等 在.NET中是否有一种方法可以在从其中一个子网站(例如)调用时解析~/images/logo.jpg?您应该创建一个cdn子域,并将资源文件指向该子域,例如 http://cdn.parents

我的目标是跨多个网站共享图像、css、js等,这些网站都位于IIS中的同一父虚拟目录下。当然,我可以硬编码图像路径,但我希望.NET有一种方法可以使用IIS配置智能地解析URL

以下是我的文件/虚拟目录结构:

父站点
子站点1
子站点2
都是分别为和设置的虚拟目录。我想在这些网站上共享图像、js、css等


在.NET中是否有一种方法可以在从其中一个子网站(例如)调用时解析
~/images/logo.jpg

您应该创建一个
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。

在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”访问它。这允许您将资产与IIS所负责的任何域一起使用

CDN是一个很好的选择,但通常情况下,您会为每个站点创建单独的DNS条目,如和,然后创建一些函数来引用文件(如)


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

您怎么知道“subsite.com”和“parentsite.com”有任何关联?它唯一可以关联的就是当前的URI请求。也许只是在链接到父级中共享文件夹的子级上创建虚拟目录,以便它们可以全部引用/assets/?在根目录中创建文件夹,称之为assets。将所有共同共享的资产放在那里。在每个“虚拟目录”的内部,为引用根资产文件夹的资产创建一个新的虚拟目录。然后~/assets将始终成为根站点的assets文件夹。parentsite.com/assets和childsite.com/assets都是相同的东西,而CDN类型的设置有更多的好处。1) 缓存!2) @Eonasdan虽然CDN可能有效,但要求Justin在所有子站点上共享同一个域(CDN.parentsite.com),或者为每个域设置单独的CDN站点(CDN.everysite.com)。这两种解决方案都会起作用——归根结底,什么最适合他所需要的。@NickBork是的,没错。我想我已经从他的问题的措辞中假设了这一点。请接受您的评论并将其转换为答案,以便他可以选择它,我可以向上投票:)(或者我可以将其添加到我的中以使其更完整)
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)