【问题标题】:Asp.Net Membership per request change applicationnameAsp.Net Membership per request change applicationname
【发布时间】:2011-11-23 20:06:24
【问题描述】:

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

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

任何建议将不胜感激。

非常感谢

编辑:

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

有人发现这有什么问题吗?

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

【问题讨论】:

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


    【解决方案1】:

    您应该能够在根 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 中放入那么多信息,因为我们想要更改的唯一属性是应用程序名称和其他所有内容都将相同。
    猜你喜欢
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 2011-02-09
    • 2017-06-19
    • 2010-12-05
    相关资源
    最近更新 更多