【发布时间】:2008-11-07 18:41:04
【问题描述】:
在 IIS 6 上,是否可以有多个域名指向同一个 Web 应用程序,并根据域名有条件地从 Web 应用程序内提供 CSS?
我需要在同一个 Web 应用程序上托管数百个不同的“皮肤”,皮肤依赖于域名,我真的不想启动大量的 Web 应用程序。
【问题讨论】:
在 IIS 6 上,是否可以有多个域名指向同一个 Web 应用程序,并根据域名有条件地从 Web 应用程序内提供 CSS?
我需要在同一个 Web 应用程序上托管数百个不同的“皮肤”,皮肤依赖于域名,我真的不想启动大量的 Web 应用程序。
【问题讨论】:
+1 到 rhinof 用于添加多个身份,但是创建一个 HttpModule 有点过头了。您可以通过检查 Request.Headers["HOST"]
的内容来简单地切换母版页中标记的 URL【讨论】:
1) 在网站选项卡的高级属性页面中添加所需的域名作为网站标识符。
2) 将 .css 扩展名映射到 aspnet_isapi.dll
3) 编写一个httpmodule,它将根据域名重新编写.css请求的url
4) 通过 web.config 启用您的模块
【讨论】:
如果你使用主题,你可以改变主题,从而改变Page.PreInit中的css等,这取决于Request.ServerVariables[“Url”]中域的值(注意,可能有更好的获取域名的服务器变量,查找)。
如果您不使用主题,您可以通过检查相同的服务器变量以编程方式换出 css 文件。
MasterPages 将成为您的朋友。
希望这能将您推向正确的方向。这是可能的,也是常见的。
【讨论】:
如果您要在网站上拥有不同的核心内容,那么我建议您输入一个全局标识符来跟踪用户所在的网站,并将您的数据放在某个数据库中,以便根据该标识符进行参考。如果每个实例都是唯一的,这是迄今为止扩展应用程序的最简单方法。
您可以将其放入一个类中,并使用一种通用模式来确定应映射到的位置。我建议,一旦您知道要缓存它的映射,然后您就可以做您想做的事情,而不会出现一千个应用程序或数据库调用的延迟。
您还需要在任何常规数据库调用中添加此参数,以便您仅获得托管域的结果。我对此有一些经验,所以如果您想查看一些具体的编码示例,请留下一些 cmets。
您可以将此技术应用于任何文件、CSS 样式表或对象以供参考。
【讨论】:
是的,这应该很简单。我会采用使用 IIS 中的主机标头将域名映射到您的应用程序的方法。然后,正如 Martin 所说,在您的应用中询问 Request.Headers["HOST"] 以切换样式表。
【讨论】: