【问题标题】:Multiple domains, same web application on IIS 6多个域,IIS 6 上的相同 Web 应用程序
【发布时间】:2008-11-07 18:41:04
【问题描述】:

在 IIS 6 上,是否可以有多个域名指向同一个 Web 应用程序,并根据域名有条件地从 Web 应用程序内提供 CSS?

我需要在同一个 Web 应用程序上托管数百个不同的“皮肤”,皮肤依赖于域名,我真的不想启动大量的 Web 应用程序。

【问题讨论】:

    标签: asp.net iis


    【解决方案1】:

    +1 到 rhinof 用于添加多个身份,但是创建一个 HttpModule 有点过头了。您可以通过检查 Request.Headers["HOST"]

    的内容来简单地切换母版页中标记的 URL

    【讨论】:

    • 谢谢。很抱歉我花了这么长时间才关闭它。
    【解决方案2】:

    1) 在网站选项卡的高级属性页面中添加所需的域名作为网站标识符。

    2) 将 .css 扩展名映射到 aspnet_isapi.dll

    3) 编写一个httpmodule,它将根据域名重新编写.css请求的url

    4) 通过 web.config 启用您的模块

    【讨论】:

    • 有没有办法通过 API 做到这一点?会有数百个。
    • 如果您的服务器上只有一个站点。将站点设置为默认站点,不要设置任何身份。然后,无论域的所有请求都将转到默认网站。
    • @Pittsburgh DBA 通过 API,您的意思是通过 COM 或使用本机 WIN32 API,而不是通过托管的 .NET 环境?如果是这样,您可以编写一个本机 isapi 过滤器,该过滤器将执行重写并将其注册到 IIS。 google关于以下关键词isapi过滤iis
    • 谢谢。我们考虑过 ISAPI 过滤器,但我们希望更容易实现。
    【解决方案3】:

    如果你使用主题,你可以改变主题,从而改变Page.PreInit中的css等,这取决于Request.ServerVariables[“Url”]中域的值(注意,可能有更好的获取域名的服务器变量,查找)。

    如果您不使用主题,您可以通过检查相同的服务器变量以编程方式换出 css 文件。

    MasterPages 将成为您的朋友。

    希望这能将您推向正确的方向。这是可能的,也是常见的。

    【讨论】:

    • 我对主题不熟悉。现在看!
    【解决方案4】:

    如果您要在网站上拥有不同的核心内容,那么我建议您输入一个全局标识符来跟踪用户所在的网站,并将您的数据放在某个数据库中,以便根据该标识符进行参考。如果每个实例都是唯一的,这是迄今为止扩展应用程序的最简单方法。

    您可以将其放入一个类中,并使用一种通用模式来确定应映射到的位置。我建议,一旦您知道要缓存它的映射,然后您就可以做您想做的事情,而不会出现一千个应用程序或数据库调用的延迟。

    您还需要在任何常规数据库调用中添加此参数,以便您仅获得托管域的结果。我对此有一些经验,所以如果您想查看一些具体的编码示例,请留下一些 cmets。

    您可以将此技术应用于任何文件、CSS 样式表或对象以供参考。

    【讨论】:

    • 非常感谢。这是一个有见地的评论。我仍在尝试选择一个“已接受”的答案。投票给你。
    【解决方案5】:

    是的,这应该很简单。我会采用使用 IIS 中的主机标头将域名映射到您的应用程序的方法。然后,正如 Martin 所说,在您的应用中询问 Request.Headers["HOST"] 以切换样式表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2018-09-07
      相关资源
      最近更新 更多