2016-04-14 62 views
2

我有一個ASP 4.6 MVC網站(所有更新到最新的Nuget包),它在SQL Server上使用集成的身份框架與實體框架。ASP.NET 4.6,身份框架和SQL Azure

如果我使用Connectionstring與我的數據庫管理員一切都可以找到,但是當我切換到額外的數據庫用戶時,我得到「用戶登錄失敗...」。

我創建了這個在主數據庫中的用戶:

CREATE LOGIN user1 with password='geheim' 

然後他加入到數據庫與此:

CREATE USER user1 FROM LOGIN user1 

EXEC sp_addrolemember 'db_datareader', 'user1' 
EXEC sp_addrolemember 'db_datawriter', 'user1' 

我可以從SQL企業管理器這個憑據連接SQL Azure並查詢我的數據庫,但不能在數據庫上使用Identity。

任何想法使用數據庫需要哪些角色或權限?

回答

1

長時間的調試會話後,我找到了解決辦法:如果throwIfV1Schema設置爲true 身份關係框架掃描數據庫。 由於我使用自定義IdentityDbContext我不得不構造改成這樣:

Public Sub New() 
    MyBase.New(Settings.DSN, False) 
End Sub 

現在的身份框架的啓動只需要對當前數據庫的用戶。

+0

除此之外,如果您未將用戶添加到主數據庫,Azure AebApps上的App-Startup可能會很慢(> 30秒)。 – Christoph

0

我會嘗試使登錄名稱與用戶名不同。您可以在以下鏈接找到有關如何設置以及使用哪些角色的詳細說明:SQL Database security: Manage database access and login security

以下示例是從該頁面提供的,與您擁有的相似。

-- first, connect to the master database 
CREATE LOGIN login1 WITH password='<ProvidePassword>'; 
CREATE USER login1User FROM LOGIN login1; 
EXEC sp_addrolemember 'dbmanager', 'login1User'; 
EXEC sp_addrolemember 'loginmanager', 'login1User'; 
+0

嗨,這是行不通的。 我只能使用實體框架和實體框架連接到數據庫,如果我使用SQL Azure數據庫管理員。 任何其他用戶(包括服務器用戶 - >數據庫用戶和新的V12包含的數據庫用戶)不起作用。 – Christoph

+1

查看我的評論。用戶必須也在主數據庫中才能加速應用程序啓動。 – Christoph