为自定义的asp.net会员制供应商提供自定义的数据库功能

 2023-02-16    312  

问题描述

我正在为我的ASP.NET应用程序创建自定义会员提供程序.我还创建了一个单独的”dbconnect”,它提供数据库功能,例如执行SQL语句,执行SPS,执行SPS或查询并返回SQLDATAREADER等…

我在Global.asax的session_start中创建了dbconnect类的实例并将其存储在会话中.后来使用静态类,我正在使用相同的单个会话在整个应用程序中提供数据库功能.简而言之,我正在为任何ASP.NET页面提供所有数据库操作的单一点.

为自定义的asp.net会员制供应商提供自定义的数据库功能

我知道我可以编写自己的代码来连接/断开数据库,并在我需要覆盖的方法内执行sps.请查看下面的代码 –

public class SGI_MembershipProvider : MembershipProvider
{

……

public override bool ChangePassword(string username, string oldPassword, string newPassword)
    {
        if (!ValidateUser(username, oldPassword))
            return false;

        ValidatePasswordEventArgs args = new ValidatePasswordEventArgs(username, newPassword, true);

        OnValidatingPassword(args);

        if (args.Cancel)
        {
            if (args.FailureInformation != null)
            {
                throw args.FailureInformation;
            }
            else
            {
                throw new Exception("Change password canceled due to new password    validation failure.");
            }
        }

.....        

//Database connectivity and code execution to change password.

}

....

}

我的问题 –
现在我需要的是在所有这些覆盖方法中从相同的数据库点执行数据库部分,如顶部所描述的.那就是我必须将现有的DBConnect实例传递给此类,以便我可以访问该方法.

可以任何人提供解决方案.可能有一些更好的技术,我不知道这一点.我使用的方法可能是错误的.你的建议总是欢迎.

感谢分享您的宝贵时间.

推荐答案

了解会员提供者的生命周期将有助于清除此功能.

当应用程序启动时,会员提供程序的实例被旋转,并且在应用程序 appdomain的生命周期保持活动状态时,这实际上将相当于应用程序生命周期.例如如果由于某种原因查看AppDomain周期,则配置应用程序并使新实例旋转.首次使用时,注册会员提供者的新实例被旋转.

您需要在您的会员提供者实现中实例化数据访问类,从您的提供程序中获取静态方法.我更喜欢使用实例.

将成员资格提供者从它的数据访问中通过创建单例或藏在应用程序中,是我看来的一个黑客,只要痛苦,悲伤,睡眠和信誉在你的同龄之间.

欢呼,祝你好运.

其他推荐答案

不要在会话中保留一个单独的dbconnect类实例,最终会为每个用户创建一个类!这将严重影响可扩展性.

您可以执行以下操作之一:

  • 将类放在应用程序状态
  • 使用 singleton模式
  • 使类静态中的类和所有方法.

我的推荐是要为第3号.您通常不需要创建一个类的类实例,该类是数据库CRUD操作,例如

public static class DBConnect
{
  public static ChangePassword(string userId, string password)
  {
    //Implementation here
  }
}

然后,您只需在提供程序中调用此代码而不创建实例:

DBConnect.ChangePassword(x,y);

以上所述是小编给大家介绍的为自定义的asp.net会员制供应商提供自定义的数据库功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/33996.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。