2010-07-06 138 views
0

我有使用標準SqlRoleProvider角色下面的配置,但我得到一個錯誤,當我試圖在wweb網站管理員工具打開安全頁面:SqlRoleProvider無法連接到數據庫

<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider"> 
    <providers> 
     <remove name="AspNetSqlRoleProvider"/> 
     <add name="AspNetSqlRoleProvider" 
      type="System.Web.Security.SqlRoleProvider" 
      connectionStringName="PoyntingInstallationConnectionString" 
      applicationName="/" /> 
    </providers> 
    </roleManager> 

的DB有所有角色表等。

+1

什麼是錯誤? – Jeroen 2010-07-06 13:14:33

+0

@Jeroen,錯誤消息不是很有幫助:「無法連接到SQL Server數據庫。」 – ProfK 2010-07-06 13:42:17

+0

你確定你正在尋找正確的連接字符串嗎? 第一個連接字符串是LocalSqlServer,它不出現在你的web.config中,但它在那裏。那麼你能告訴我如何從你的業務數據訪問中獲得連接字符串嗎? – Jeroen 2010-07-06 13:52:38

回答

1

確保PoyntingInstallationConnectionString位於您的web.config中,配置正確,並指向包含您的表的數據庫。

這些角色將是aspnet_Roles表中的條目,而不是數據庫角色中的條目。並且沒有默認角色,所以當您第一次運行腳本時,該表應該是空的。

編輯:你能提供關於你如何創建auth數據庫的更多細節嗎?即您是直接運行aspnet_regsql工具,還是分別生成並運行腳本?

編輯2:aspnet_regsql工具很容易運行 - 它位於.NET Framework v2.0文件夾中。 (默認位置C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727)

有一堆參數可以用來從命令行運行,或者如果你運行它沒有參數它會打開一個嚮導來指導你完成它。請注意,即使您不打算使用嚮導,您也可以獲得對所有成員資格提供程序功能(配置文件,個性化設置,Web事件...)的支持。

我建議你運行它,然後將結果與現有數據庫進行比較。有人運行該工具,然後只是將表複製到另一個數據庫,卻沒有意識到還有一些其他需要的東西?我只是嘗試從命令行和嚮導運行工具,並且它生成了所有角色,特效等。

當正確運行時,您應該有一堆表(至少6個),存儲過程(幾十個左右 - 我有35個)和數據庫角色(至少6個),名稱以aspnet_開頭,以及一系列名稱以vw_aspnet_開頭的視圖(至少5個)。如果你錯過了這些的任何部分,提供者將無法工作。

我通常從命令行運行它,以便只獲取成員資格和角色資料。這將減少噪音相當多,但也是爲什麼我的數字有點模糊。 :)

+0

連接對於標準業務數據訪問正常工作。我今天看到的幾個來源還談到了數據庫角色。不是爲了Web授權,而是爲了供應商本身。 – ProfK 2010-07-06 13:43:48

+1

@ProfK - 好的,我明白你在說什麼了。是的,提供商需要一些數據庫角色等。看我的編輯。 – GalacticCowboy 2010-07-06 13:58:24

+0

我的同事剛剛使用該工具而不生成腳本。 – ProfK 2010-07-06 14:32:44