2011-09-20 89 views
1

我一直在試圖讓自定義角色提供者爲我的WCF服務工作。他們被託管在IIS 7中,但無論我做什麼,我似乎都無法讓他們實際工作。我剛剛獲得默認角色提供程序找不到。錯誤。我的web.config如下所示:獲取WCF加載自定義角色提供者時出錯

<system.web> 
    <compilation debug="false" targetFramework="4.0" /> 
    <roleManager enabled="true" defaultProvider="CustomValidators.WaveRoleProvider, CustomValidators"> 
     <providers> 
     <clear/> 
     <add name="test" type="CustomValidators.WaveRoleProvider, CustomValidators"/> 
     </providers> 
    </roleManager> 
    </system.web> 

提供RoleProvider的實際函數如下。

namespace CustomValidators 
{ 
    public class WaveRoleProvider : RoleProvider 
    { 
    public override string[] GetRolesForUser(string username) 
    { 
     return string[0]; 
    } 

    public override bool IsUserInRole(string username, string roleName) 
    { 
     return true; 
    } 

    public override void AddUsersToRoles(string[] usernames, string[] roleNames) 
    { 
     return; 
    } 

    public override string ApplicationName 
    { 
     get 
     { 
     return "test"; 
     } 
     set 
     { 
     } 
    } 

    public override void CreateRole(string roleName) 
    { 
     return; 
    } 

    public override bool DeleteRole(string roleName, bool throwOnPopulatedRole) 
    { 
     return true; 
    } 

    public override string[] FindUsersInRole(string roleName, string usernameToMatch) 
    { 
     return new string[0]; 
    } 

    public override string[] GetAllRoles() 
    { 
     return new string[0]; 
    } 

    public override string[] GetUsersInRole(string roleName) 
    { 
     return new string[0]; 
    } 

    public override void RemoveUsersFromRoles(string[] usernames, string[] roleNames) 
    { 
     return; 
    } 

    public override bool RoleExists(string roleName) 
    { 
     return true; 
    } 
    } 
} 

很顯然,我最終會填補所有的出實際的邏輯,而不是僅僅返回虛擬數據,但至少應該負荷。

我已經檢查和IIS確實加載程序集像它應該,如果我重命名類或程序集它會生成一個不同的錯誤,所以我非常確定,一切都加載,因爲它應該,但沒有重要的是我嘗試了我總是得到默認角色提供程序無法找到。我一直在使用谷歌搜索,並檢查堆棧溢出,但我似乎無法找出原因。我意識到,現在我的班級是非常基本的,但

回答

1

修復了我自己的問題。問題是我應該在我的defaultProvider而不是類中指向我的提供者的名稱。

<system.web> 
    <compilation debug="false" targetFramework="4.0" /> 
    <roleManager enabled="true" defaultProvider="test"> 
     <providers> 
     <clear/> 
     <add name="test" type="CustomValidators.WaveRoleProvider, CustomValidators"/> 
     </providers> 
    </roleManager> 
    </system.web>