2013-09-25 51 views
1

我想使用自定義成員資格和自定義角色提供程序。我有這個類:在web.config中設置自定義成員身份的代碼是否正確

public class CustomRoleProvider : RoleProvider 
{ 
//override methods 
} 

public class CustomMembershipProvider : MembershipProvider 
{ 
//override methods 
} 

我想設置web.config,這段代碼是否正確?

<membership defaultProvider="CustomMembershipProvider"> 
    <providers> 
    <clear /> 
    <add name="CustomMembershipProvider" type="Login1.Code.CustomMembershipProvider, Login1, Version=1.0.0.0, Culture=neutral" connectionStringName="LoginDB1Entities" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> 
    </providers> 
</membership> 

<roleManager enabled="true" defaultProvider="CustomRoleProvider"> 
    <providers> 
    <clear /> 
    <add name="CustomRoleProvider" type="Login1.Code.CustomRoleProvider" connectionStringName="LoginDB1Entities" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" writeExceptionsToEventLog="false" /> 
    </providers> 
</roleManager> 

因爲當我去到ASP.NET配置,安全選項卡,但得到這個消息:

有一個問題,您選擇的數據存儲。這可能是由於無效的服務器名稱或憑據,或者權限不足造成的。它也可能是由角色管理器功能未啓用引起的。點擊下面的按鈕將被重定向到您可以選擇新數據存儲的頁面。 以下消息可能有助於診斷問題:方法或操作未實現。

回答

1

此處的問題似乎源自您的connectionStringName屬性。

確保你定義/在你的web.config的<connectionStrings>部分添加連接字符串

<connectionStrings> 
<add name="LoginDB1Entities" ... /> 
</connectionStrings> 

另外,如果你ahve如上面已經添加,然後確保你使用了正確的設置。

首先檢查數據庫的確切位置?找出哪個SQL Server實例是應用程序使用的數據庫。修改連接字符串以指向該實例。

+0

是的。我在web.config中設置了這個連接字符串 –

+1

你確定你在connectionStrings中使用了正確的設置:Data Source,UserName,Password等?也重新編譯,重建應用程序並在那之後再次運行 –

+0

我的自定義成員身份正在網站中工作。但是當我轉到ASP.NET配置和安全選項卡時,獲取消息 –

0

的方法或操作未實現

這是,如果你扔NotImplementedException不帶任何參數的消息得到。

最明顯的原因是您的一個自定義提供程序尚未實現預期方法之一。如果你能得到堆棧跟蹤,你會看到哪一個。

UPDATE迴應評論:

  • 方法:

    我的自定義成員在現場

    成員和角色提供包含有兩個目的方法工作在運行時需要進行身份驗證(MembershipProvider)和授權(RoleProvider)。例如,在運行時,RoleProvider只使用方法IsUserInRoleGetRolesForUser

  • 管理用戶(MembershipProvider)和角色/角色成員資格(RoleProvider)所需的方法。如果要使用ASP.NET配置和安全性選項卡管理提供者的數據存儲,則需要這些方法。

這是完全有效的創建一個供應商,只提供運行時功能 - 所謂的「只讀」提供,在這種情況下,你必須提供一些其他外部機構管理供應商的數據存儲。例如,WindowsTokenRoleProvider是隻讀提供者。但是,如果您這樣做,則無法使用ASP.NET配置和安全性選項卡管理提供商商店。

看來你沒有實現一個或多個管理方法,而是拋出NotImplementedException

順便提一句,NotImplementedException不是在只讀提供程序中拋出不受支持的方法的最佳例外。它通常只應用於指示尚未在開發版本中實施的方法。

如果您不打算實施該方法,最好扔NotSupportedException--或者在提供者的情況下,或者ProviderException

+0

我的自定義成員身份正在網站中工作。但是當我轉到ASP.NET配置和安全選項卡時,獲取消息。我的自定義會員資格是問題? –

相關問題