我有一个数据库,我创建了一个包含用户,我需要使用该用户连接到我的网络应用程序。我一直能够使用Persist Security Info=False
的标准用户连接到网络应用。
然而,我能够与包含的用户连接的唯一方法是将我的连接字符串更改为Persist Security Info=True
,否则即使我能够使用SSMS连接,我也会获得登录失败的sql异常。我不确定为什么会有效,是否有人知道为什么包含的用户需要将属性设置为True?
答案 0 :(得分:7)
对于您的网络应用,您使用的是实体框架吗?
对于你的DbContext,你使用的是IdentityDbContext
吗?
如果是这样,我遇到了同样的问题。我能够直接与SqlConnection连接,但遇到了一个" Access Deny"与Entity Framework连接时出错。 当我向用户提供足够的权限时,所有查询都非常慢。
实例化Context(使用IdentityDbContext
)时,应将第二个参数设置为false。
public AdeleDbContext(string connectionString) : base(connectionString, false)
{
}
第二个参数是throwIfV1Schema
,当设置为true
(这是默认值)时,它将通过为多列调用SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME=@Table
来验证数据库的模式。
这就是连接速度慢的原因,用户在使用Entity Framework和IdentityDbContext连接到DB时需要更多权限。