Я запускаю MVC
проект на машине.Я установил пользовательское членство в веб-конфигурации, например:
<membership defaultProvider="CustomMembership">
<providers>
<clear/>
<add name="CustomMembership" type="GotPayments.CustomAuthentication.CustomMembership"/>
</providers>
</membership>
Я реализовал некоторые функции, которые мне нужны;для других я просто бросил NotImplementedException
, так как я не использую его.Поэтому, когда я вызываю своего внедренного пользователя ValidateUser
, все работает нормально:
public override bool ValidateUser(string email, string password)
{
if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password))
{
return false;
}
using (MyProject ctx = new MyProject())
{
var user = (from us in ctx.Users
where string.Compare(email, us.Email, StringComparison.OrdinalIgnoreCase) == 0
&& string.Compare(password, us.Password, StringComparison.OrdinalIgnoreCase) == 0
&& us.IsActive == true
select us).FirstOrDefault();
return (user != null) ? true : false;
}
}
Но, как только я копирую проект на другую машину и запускаю его, та же функция (до выполнения; так что F11во время отладки не входите в ValidateUser
), вызовите это:
public override MembershipPasswordFormat PasswordFormat
{
get
{
throw new NotImplementedException();
}
}
, который выдает исключение.
Почему он вызывает его только "иногда"?И как это называют рамки?Я никогда не называю эту функцию сам.
StackTrace:
in System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
in System.Environment.get_StackTrace()
in MyProject.CustomAuthentication.CustomMembership.get_PasswordFormat() in CustomMembership.cs:riga 117
in System.Web.Security.Membership.CheckedPasswordFormat(MembershipProviderCollection providers)
in System.Web.Security.Membership.Initialize()
in System.Web.Security.Membership.get_Provider()
in System.Web.Security.Membership.ValidateUser(String username, String password)
in MyProject.Controllers.AccountController.Login(LoginViewModel loginView) in AccountController.cs:riga 27
Login.cs
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginViewModel loginView)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(loginView.Email, loginView.Password))
{
// ...
}
}
// ...
}