每个请求的Asp.Net成员资格更改应用程序名称

时间:2011-11-23 20:06:25

标签: c# asp.net-mvc-3 sql-server-2008 asp.net-membership

我们有一个应用程序运行一个数据库,但有多个域指向它,并且根据域确定我们加载哪个css以及显示哪些客户数据。一切正常,但我想根据请求更改SqlMembership提供商的应用程序名称,具体取决于确保会员提供商中的用户名/电子邮件之间没有冲突。

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

任何建议都将不胜感激。

非常感谢

修改

好的,我正在尝试这个,我有一个基本控制器,并在OnActionExecuting的覆盖范围内我正在构建一个SqlMembershipProvider并使用NameValueCollection调用Initialize,其中包含我需要的所有属性并根据客户更改ApplicationName(知道网址。

是否有人发现此问题?

修改 不管它也不起作用,它仍然试图用某些方法加载web.config,因此ValidateUser可以工作但CreateUser会抛出异常,因为它无法在web.config中找到该条目。

1 个答案:

答案 0 :(得分:0)

您应该可以在root 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" />