2016-08-03 32 views
2

我有一个数据库,我创建了一个包含的用户,我需要使用该用户连接到我的Web应用程序。我一直可以通过Persist Security Info=False的标准用户连接到网络应用程序。为什么包含数据库用户需要坚持安全信息=真

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

+0

看看这个http://stackoverflow.com/questions/30419627/persist-security-info-property-true-and-persist-security-info-property-false –

+0

这个问题帮助我们修复了我们的连接字符串所以我们可以使用包含的用户连接到Azure。 – sfm

回答

4

对于你的web应用程序,你使用的是实体框架? 而对于你的DbContext你使用的是IdentityDbContext

如果是这样,我有同样的问题。我能够直接与SqlConnection连接,但在与实体框架连接时遇到“访问拒绝”错误。 当我给予我的用户足够的权限时,所有查询都非常慢。

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

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

第二个参数是throwIfV1Schema当设定为true(这是默认值),它会通过调用SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS where [email protected]许多列验证对的数据库架构。

这就是连接速度慢的原因,用户使用实体框架和IdentityDbContext连接到数据库时需要更多的权限。