C# 调用自定义成员资格提供程序的自定义函数

C# 调用自定义成员资格提供程序的自定义函数,c#,.net,asp.net-mvc,asp.net-membership,C#,.net,Asp.net Mvc,Asp.net Membership,我有一个自定义的会员资格提供商,如下所示: public class PMembershipProvider : MembershipProvider { public IMembershipService Account { get; set; } public PMembershipProvider() { this.Account = new UserModel(); } public override bool Validat

我有一个自定义的会员资格提供商,如下所示:

public class PMembershipProvider : MembershipProvider
{
    public IMembershipService Account { get; set; }

    public PMembershipProvider()
    {
        this.Account = new UserModel();

    }

    public override bool ValidateUser(string username, string password)
    {
        return Account.Login(username, password);
    }

    public void DisposeContext()
    {
        Account.Dispose();
    }
}
public interface IMembershipService
{
    bool Login(string userName, string password);
    void Dispose();
}
和会员服务界面,如下所示:

public class PMembershipProvider : MembershipProvider
{
    public IMembershipService Account { get; set; }

    public PMembershipProvider()
    {
        this.Account = new UserModel();

    }

    public override bool ValidateUser(string username, string password)
    {
        return Account.Login(username, password);
    }

    public void DisposeContext()
    {
        Account.Dispose();
    }
}
public interface IMembershipService
{
    bool Login(string userName, string password);
    void Dispose();
}
因此,当我登录用户时,我可以调用我的用户模型的登录方法,如下所示:

public class UserController : Controller
{
    public ActionResult Login(UserModel model)
    {
        if (Membership.ValidateUser(model.name, model.password)) {
            FormsAuthentication.SetAuthCookie(model.name, false, MvcApplication.BASE_URL);
            return RedirectToAction("Index", "Home");
    }
}
我遇到了一些奇怪的用户问题,我认为这些问题与未经处理的EF对象上下文有关。基于,我想尝试手动处理成员资格提供程序使用的对象上下文。我希望这种情况在请求结束时发生,为此,我希望覆盖我的用户控制器上的
Dispose
方法:

protected override void Dispose(bool disposing)
{
    base.Dispose(disposing);
    Membership.DisposeContext(); //this is what I want to do, but it doesn't work
}
当我尝试调用自定义成员资格提供程序的
DisposeContext
方法时,它找不到该方法。('System.Web.Security.Membership'不包含'DisposeContext'的定义)

如何在成员资格使用的同一对象上调用我的
DisposeContext
方法

仅提供静态方法来调用默认成员资格提供程序上的已知方法。要调用自定义方法,您需要访问,将其强制转换为自定义提供程序,然后调用该方法:

((PMembershipProvider)Membership.Provider).DisposeContext();

啊……我试过几乎完全一样的东西。不过这很有效-谢谢!