gpt4 book ai didi

c# - ASP.NET Identity 是默认的 ApplicationUserManager 实现 IUserEmailStore 吗?

转载 作者:行者123 更新时间:2023-11-30 23:34:02 26 4
gpt4 key购买 nike

你好,

我正在研究 ASP.NET 身份源,特别是在 UserValidator 中.我想为我自己的项目重写它,以便能够更改错误消息。所以我将该类复制到我的项目中。当我尝试使用它时 - 我收到错误 - 'Microsoft.AspNet.Identity.UserManager<TUser,TKey>' does not contain a definition for 'GetEmailStore' and no extension method 'GetEmailStore' accepting a first argument of type 'Microsoft.AspNet.Identity.UserManager<TUser,TKey>' could be found (are you missing a using directive or an assembly reference?)在这一行

var email = await Manager.GetEmailStore().GetEmailAsync(user).ConfigureAwait(false);

我的问题是 - 这怎么能在 AspNet.Identity 框架中工作,而不是在我的项目中?看起来经理没有实现 IUserEmailStore .

我测试的都是 VS2013 中的默认 MVC 模板

最佳答案

我终于找到了答案(经过大量搜索)。

如果您查看 UserManager 的源代码,GetEmailStore() 方法确实存在,但它是内部的。看一看:

    internal IUserEmailStore<TUser, TKey> GetEmailStore()
{
var cast = Store as IUserEmailStore<TUser, TKey>;
if (cast == null)
{
throw new NotSupportedException(Resources.StoreNotIUserEmailStore);
}
return cast;
}

因此,它只存在于自己的 Identity 程序集的文件中,这就是它在那里工作而不在您的代码中工作的原因。

此外,您还可以获得相同的结果:

var email = await Manager.GetEmailAsync(user.Id).ConfigureAwait(false);

Click here to see UserManager's Source Code

关于c# - ASP.NET Identity 是默认的 ApplicationUserManager 实现 IUserEmailStore 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33640357/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com