gpt4 book ai didi

c# - 为什么包含的数据库用户需要 Persist Security Info=True

转载 作者:太空狗 更新时间:2023-10-29 18:28:45 24 4
gpt4 key购买 nike

我有一个数据库,我在其中创建了一个包含的用户,我需要使用该用户连接到我的 Web 应用程序。我一直能够使用具有 Persist Security Info=False 的标准用户连接到 Web 应用程序。

但是,我能够与包含的用户连接的唯一方法是将我的连接字符串更改为 Persist Security Info=True,否则我会收到登录失败的 sql 异常,即使我是能够使用 SSMS 进行连接。我不确定它为什么起作用,有人知道为什么包含的用户需要将该属性设置为 True 吗?

最佳答案

对于您的网络应用程序,您使用的是 Entity Framework 吗?对于您的 DbContext,您使用的是 IdentityDbContext 吗?

如果是这样,我也遇到了同样的问题。我能够直接与 SqlConnection 连接,但在与 Entity Framework 连接时遇到“拒绝访问”错误。当我为我的用户提供足够的权限时,所有查询都非常慢。

当实例化 Context(使用 IdentityDbContext)时,您应该将第二个参数设置为 false。

public AdeleDbContext(string connectionString) : base(connectionString, false)
{
}

第二个参数是 throwIfV1Schema,当设置为 true(默认值)时,它将通过调用 SELECT COLUMN_NAME FROM 来验证数据库的模式INFORMATION_SCHEMA.COLUMNS 其中 TABLE_NAME=@Table 用于许多列。

这就是为什么在使用 Entity Framework 和 IdentityDbContext 连接到 DB 时连接缓慢并且用户需要更多权限的原因。

关于c# - 为什么包含的数据库用户需要 Persist Security Info=True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38749216/

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