多个域,IIS 6上的相同Web应用程序

时间:2008-11-07 18:41:04

标签: asp.net iis

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

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

5 个答案:

答案 0 :(得分:7)

+1用于添加多个身份的rhinof,但是创建一个HttpModule有点过分了。您可以通过检查Request.Headers [“HOST”]的内容来简单地在母版页中切换标记的URL

答案 1 :(得分:2)

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

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

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

4)通过web.config

启用您的模块

答案 2 :(得分:1)

如果您使用主题,则可以更改主题,从而根据Request.ServerVariables [“Url”]中域的值更改Page.PreInit中的css等(注意,可能会有更好的服务器变量来获取域名,查找它。

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

MasterPages将成为你的朋友。

希望能把你推向正确的方向。这是可能的和共同的。

答案 3 :(得分:1)

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

你可以把它放到一个类中,并有一个共同的模式来确定东西应该映射到哪里。我建议,一旦你知道缓存的映射,然后你就可以做你想做的事情,而不会有一千个app或db调用的延迟。

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

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

答案 4 :(得分:1)

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