我可以在一个会员数据库下运行多个网站吗?

时间:2010-06-08 10:37:42

标签: asp.net asp.net-membership

我正在尝试计划一系列共享许多资源的网站,例如css / jscript / images / content等。出于这个原因,我想在相同的应用程序和IIS配置文件下运行所有​​网站,但根据使用的URL,更改母版页和主题/皮肤。

ASP.NET成员资格数据库看起来好像是为了设计这个目标而设计的,因为它允许您设置多个应用程序,但是我认为构建它的目的是允许应用程序在虚拟目录下运行/文件夹,而不是单独的网址。

是否可以将网址映射到特定应用程序?

提前致谢 人

2 个答案:

答案 0 :(得分:2)

是的,可以这样做。在您的配置中,为您的提供程序使用applicationName。这样,所有数据都将保存在同一个数据库中,但由大多数表中的Application ID保持独立。

您共享资源的一种可能性是将它们放在一个位置,您可以通过在第一个位置使用完整网址来指向其他网站的位置。

另一种可能性是在同一个域中的虚拟目录中托管一个应用程序,尽管你可以通过web.config继承来解决一些有趣的问题。如果您显示两个应用程序的目标域命名,将会有所帮助。

在一个应用程序中: web.config 1:

<roleManager enabled="true">
    <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" applicationName="/ApplicationOne"
            ...add other properties here as standard
     />
    </providers>
</roleManager>
<membership>
    <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" applicationName="/ApplicationOne"
            ...add other properties here as standard
         />
    </providers>
</membership>

在您的其他申请中: web.config 2:

<roleManager enabled="true">
    <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" applicationName="/ApplicationTwo"
            ...add other properties here as standard
     />
    </providers>
</roleManager>
<membership>
    <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" applicationName="/ApplicationTwo"
            ... add other properties here as standard
         />
    </providers>
</membership>

答案 1 :(得分:-1)

最简单的解决方案是根据页面执行的URL包含样式表,使用:

Request.ServerVariables("SERVER_NAME")

IE(伪):

if Request.ServerVariables("SERVER_NAME") = "http://www.domain1.com" then
  include stylesheet1
else
  include stylesheet2
end if

您需要找到一个从URL中提取域名的功能,以便它能够正常运行。