首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >身份用户验证用户

身份用户验证用户
EN

Stack Overflow用户
提问于 2022-08-26 02:09:14
回答 1查看 95关注 0票数 0

我正在升级一个Winform,从使用成员身份到身份。我所需要的只是一个简单的函数,它将通过两个文本框中的用户名和密码来验证用户的身份。

我迁移了数据库中的所有表。

我已经创建了一个连接字符串-- app.config文件。

所有现有(inherioted)代码都在VB中,我在这里或其他地方可以找到的几乎所有东西都是C#,但是我编写了这个函数来验证登录和密码是否是数据库中的内容。我对从数据库复制的ID进行了硬编码,因为使用FindByName会产生一个错误,即使我使用FindById方法,这也是相同的错误。

私有函数DbProviderFactories.RegisterFactory("System.Data.SqlClient",System.Data.SqlClient.SqlClientFactory.Instance) VerifyUser(userName为字符串,密码为字符串)为布尔Dim connectionString字符串

代码语言:javascript
复制
    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),如果需要,我如何做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2022-08-30 01:23:01

我自己回答问题。我将上面的代码从VB.Net转换为C#,所有这些都能工作。

代码语言:javascript
复制
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#。耶!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73495408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档