2016-08-03 57 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連接到數據庫時需要更多的權限。