C# 每个请求更改Asp.Net成员身份应用程序名称

C# 每个请求更改Asp.Net成员身份应用程序名称,c#,asp.net-mvc-3,sql-server-2008,asp.net-membership,C#,Asp.net Mvc 3,Sql Server 2008,Asp.net Membership,我们有一个应用程序运行一个DB,但有多个域指向它,并根据域确定我们加载的css和显示的客户数据。一切正常,除了我想根据请求更改SqlMembership提供程序的应用程序名,这取决于它是哪个客户,以确保成员资格提供程序中的用户名/电子邮件之间没有冲突 因此,如果域是abc123.com,我只想为该请求更改ApplicationName。不幸的是,每个应用程序的成员身份都是静态的,所以我的问题是如何做到这一点。理想情况下,我只想在web.config中的基本控制器上实例化一个SqlMembersh

我们有一个应用程序运行一个DB,但有多个域指向它,并根据域确定我们加载的css和显示的客户数据。一切正常,除了我想根据请求更改SqlMembership提供程序的应用程序名,这取决于它是哪个客户,以确保成员资格提供程序中的用户名/电子邮件之间没有冲突

因此,如果域是abc123.com,我只想为该请求更改ApplicationName。不幸的是,每个应用程序的成员身份都是静态的,所以我的问题是如何做到这一点。理想情况下,我只想在web.config中的基本控制器上实例化一个SqlMembershipProvider、RoleProvider和ProfileProvider,并在请求开始时仅更改应用程序名称,而不影响任何其他请求

如有任何建议,将不胜感激

非常感谢

编辑:

好的,在我尝试这一点的时候,我有一个基本控制器,在OnAction执行的覆盖中,我正在构建一个SqlMembershipProvider,并使用包含我需要的所有属性的NameValueCollection调用Initialize,并根据客户(url已知)更改ApplicationName

有人认为这有什么问题吗

编辑:
不,这也不起作用,它仍在尝试使用某些方法从web.config加载表单,因此ValidateUser可以工作,但CreateUser抛出异常,因为它无法在web.config中找到条目。

您应该能够在根web.config中执行此操作。 向定义不同提供程序的节点添加applicationname属性。 只需确保每个应用程序使用不同的名称即可

add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="YourAppName" />

问题是我们已经有20个网站在运行,目标是100个,我不想在web.config中添加那么多信息,因为我们唯一要更改的属性是应用程序名,其他所有内容都是一样的。