我们有一个应用程序运行一个数据库,但有多个域指向它,并且根据域确定我们加载哪个css以及显示哪些客户数据。一切正常,但我想根据请求更改SqlMembership提供商的应用程序名称,具体取决于确保会员提供商中的用户名/电子邮件之间没有冲突。
因此,如果域名是abc123.com,我想仅为该请求更改ApplicationName。不幸的是,每个应用程序的成员资格是静态的,所以我的问题是我该怎么做。理想情况下,我想在web控制器的基本控制器上实例化一个SqlMembershipProvider,RoleProvider,ProfileProvider,并在请求开始时只更改应用程序名称而不影响任何其他请求。
任何建议都将不胜感激。
非常感谢
修改
好的,我正在尝试这个,我有一个基本控制器,并在OnActionExecuting的覆盖范围内我正在构建一个SqlMembershipProvider并使用NameValueCollection调用Initialize,其中包含我需要的所有属性并根据客户更改ApplicationName(知道网址。
是否有人发现此问题?
修改 不管它也不起作用,它仍然试图用某些方法加载web.config,因此ValidateUser可以工作但CreateUser会抛出异常,因为它无法在web.config中找到该条目。
答案 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" />