我有一个数据库,我创建了一个包含用户,并需要使用该用户连接到我的Web应用程序。以前我一直能够使用标准用户连接到Web应用程序,其具有Persist Security Info=False
。
然而,我只能通过更改连接字符串为Persist Security Info=True
才能使用包含的用户进行连接,否则我会得到一个登录失败的SQL异常,尽管我可以使用SSMS进行连接。我不确定为什么它能正常工作,有人知道为什么需要将该属性设置为True吗?
我有一个数据库,我创建了一个包含用户,并需要使用该用户连接到我的Web应用程序。以前我一直能够使用标准用户连接到Web应用程序,其具有Persist Security Info=False
。
然而,我只能通过更改连接字符串为Persist Security Info=True
才能使用包含的用户进行连接,否则我会得到一个登录失败的SQL异常,尽管我可以使用SSMS进行连接。我不确定为什么它能正常工作,有人知道为什么需要将该属性设置为True吗?
对于你的web应用程序,你是否使用了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 where TABLE_NAME=@Table
对许多列的数据库模式进行验证。
这就是使用Entity Framework和IdentityDbContext连接到数据库时,连接速度变慢且需要更多权限的原因。