2011-11-23 46 views
1

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

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

任何建议将不胜感激。

非常感谢

编辑:此刻

OK我想这一点,我有一个基本的控制器和覆盖的OnActionExecuting内我建立一个SqlMembershipProvider的,并调用初始化包含的NameValueCollection我需要的所有属性,并根据客户(由url知道)更改ApplicationName。

有没有人看到这个问题?

编辑: 都能跟得上,不能正常工作,它仍然试图加载形成一定的方法在web.config这样的ValidateUser工作,但CREATEUSER抛出一个异常,因为它无法找到在web.config中的条目。

回答

0

你应该可以在根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" /> 
+0

问题是我们已经有20个站点运行并且瞄准了100个,我不想在web.config中放置那么多的信息,因为我们想要改变的唯一属性是应用程序名称其他一切都会一样。 – user351711