ASP.NET子域网站';代码相同但内容不同的;图像

ASP.NET子域网站';代码相同但内容不同的;图像,asp.net,c#-4.0,Asp.net,C# 4.0,我目前有一个网站,例如:-www.domain.com&我需要为这个网站创建3-4个子域名,如 abc.domain.com,xyz.domain.com 我想为所有子域维护相同的代码,对于每个子域,除了css样式、徽标、页面标题和少数页面内容会发生变化外,我的外观和感觉都相同 标题和图像(我只存储图像名称)可以来自资源文件 例如,我将为每个子域设置资源文件&我的网站应根据域自动选择资源文件 但不确定哪种方法是实现这一目标的最佳且简单的方法 。我不想采用这种方法。因为我的所有子域都将使用英语&将

我目前有一个网站,例如:-www.domain.com&我需要为这个网站创建3-4个子域名,如 abc.domain.com,xyz.domain.com

我想为所有子域维护相同的代码,对于每个子域,除了css样式、徽标、页面标题和少数页面内容会发生变化外,我的外观和感觉都相同

标题和图像(我只存储图像名称)可以来自资源文件

例如,我将为每个子域设置资源文件&我的网站应根据域自动选择资源文件

但不确定哪种方法是实现这一目标的最佳且简单的方法


。我不想采用这种方法。因为我的所有子域都将使用英语&将来我将拥有更多子域。

如果您完全控制web服务器并且使用IIS,您可以通过让多个站点指向文件系统中的同一物理位置来轻松实现这一点。然后,每个站点可以(并且必须)具有唯一的绑定,该绑定将允许IIS将传入的请求路由到适当的站点(子域)。请注意,让每个站点在其自己的应用程序池上运行,而不是共享同一个应用程序池,这一点很重要

此外,您需要考虑到这种方法的可扩展性非常有限,如果将来需要有数百个站点,那么它可能会给Web服务器带来大量开销。因此,如果您需要一个可扩展的解决方案,您应该采用多租户方法,这样您就可以轻松实现负载平衡

最后一点要注意的是,将图像捆绑在资源文件中是一个非常糟糕的主意…避免它

网站特定内容 拥有指向同一物理位置的不同站点并不意味着它们必须始终共享相同的内容。您仍然可以根据请求上下文,通过简单地检查请求对象来决定动态服务的内容…这适用于动态ASP.NET页面,但是,对于静态页面,您需要为每个站点创建一个虚拟目录,并将其指向该站点的特定位置…这将允许您自定义特定站点的内容…请参阅下面的屏幕截图,我如何拥有指向其他位置的“登录”虚拟目录

例子 这是一个非常简单的例子。假设您设置了两个站点

  • en.domain.com
  • es.domain.com
  • 这些站点指向相同的物理位置…
    C:\inetpub\domain\site

    然后,有一个页面
    index.aspx
    ,其中有一个面板,显示欢迎消息

    <asp:Panel ID="pnlWelcome" runat="server"></asp:Panel>
    

    如果您的应用程序中有一个更复杂的体系结构,那么您需要检查
    请求
    对象,以确定请求是在哪个上下文中执行的,无论是在“en”站点上下文还是在“es”站点上下文中

    HttpContext.Current.Request.Url.Host;
    

    决不是说,我建议这是处理系统中本地化资源的最佳方式……这只是如何处理站点特定内容的一个示例。

    我们可以完全访问web服务器&我们正在使用IIS。在IIS中指向相同的物理位置是可以的。那部分没问题。我将使用资源文件只保存图像文件名。我的网站主要包含6-7个静态页面,其余都是数据库驱动的页面。所以这6-7个静态页面将包含来自资源文件的内容。。。所以我想知道我该怎么做???我想我已经很清楚了。创建网站,添加绑定信息,将它们指向相同的位置…你能更具体一点吗?你不了解的部分是什么?当用户访问不同的子域时,页面的文本应该改变&从单独的资源文件中选择。。。也许我每个子域都有单独的资源文件或者类似的东西???我想你误解了我的想法。对于静态页面,.aspx页面对于所有子域都是相同的。采取特殊情况,如Static1.aspx位于根文件夹上。如果从“abc.domain.com/Static1.aspx”访问此页面,将显示与“xyz.domain.com/Static1.aspx”不同的内容。假设我在这个页面中有一个文本控件,我正在从资源文件填充该控件,其中有一段文本,对于不同的子域来说是不同的。Mate,配置和设置仍然有效。您只需要提供不同的内容…无论内容是在数据库中还是在xml文件中…这并不重要,重要的是如何获取该内容…我将在回答中给出一个简单的示例
    Control ctrl = LoadControl("~/content/{your_site_specific_content}");
    pnlWelcome.Controls.Clear();
    pnlWelcome.Controls.Add(ctrl);
    
    HttpContext.Current.Request.Url.Host;