我正在升级一个Winform,从使用成员身份到身份。我所需要的只是一个简单的函数,它将通过两个文本框中的用户名和密码来验证用户的身份。
我迁移了数据库中的所有表。
我已经创建了一个连接字符串-- app.config文件。
所有现有(inherioted)代码都在VB中,我在这里或其他地方可以找到的几乎所有东西都是C#,但是我编写了这个函数来验证登录和密码是否是数据库中的内容。我对从数据库复制的ID进行了硬编码,因为使用FindByName会产生一个错误,即使我使用FindById方法,这也是相同的错误。
私有函数DbProviderFactories.RegisterFactory("System.Data.SqlClient",System.Data.SqlClient.SqlClientFactory.Instance) VerifyUser(userName为字符串,密码为字符串)为布尔Dim connectionString字符串
connectionString = Configuration.ConfigurationManager.ConnectionStrings.Item("ApplicationServices").ConnectionString
Dim identdb As New IdentityDbContext("ApplicationServices")
Dim myUserStore As New UserStore(Of IdentityUser)(identdb)
Dim myUserManager = New UserManager(Of IdentityUser)(myUserStore)
Dim bRtn As Boolean = False
Dim usr As IdentityUser
usr = myUserManager.FindById("14ED6529-01E3-4BDE-8377-10482DF24BCD")
bRtn = myUserManager.CheckPassword(usr, password)
Return bRtn
End Function此错误发生在行
System.TypeInitializationException:'MethodCallTranslator‘的类型初始化程序抛出了一个例外。内部异常ArgumentNullException:值不能为空。(参数'key')
我当时的印象是,在默认情况下,标识将使用密钥Id。
有人知道我错过了什么吗?我是否必须指定表正在使用的键(即Id),如果需要,我如何做到这一点?
发布于 2022-08-30 01:23:01
我自己回答问题。我将上面的代码从VB.Net转换为C#,所有这些都能工作。
public bool VerifyUserNamePassword(string userName, string password)
{
var usermanager = new UserManager<IdentityUser>(new UserStore<IdentityUser>(new IdentityDbContext("ApplicationServices")));
return usermanager.Find(userName, password) != null;
}VB.Net代码完全相同,但只是在VB语法中。我不知道为什么C#工作,但VB没有,但它确实。
因此,现在要将其他数千行代码转换为C#。耶!
https://stackoverflow.com/questions/73495408
复制相似问题