2009-12-09 5 views
3

asp.net mvc app에서 사용자 지정 역할 공급자를 구현하는 데 도움이 필요합니다. 사용자 지정 역할 공급자가 상속 된 추상 멤버를 구현하지 않습니다.

MyRoleProvider does not implement inherited abstract member 'System.Web.Security.RoleProvider.RoleExists(string) 

내가 다른 방법에 대해 동일한 오류가 발생합니다 :

문제

는 내가 좋아하는 몇 가지 오류를 얻고 있다는 것입니다. 그러나, 나는

내 Web.config를이있다 ... 사람들을 위해 구현해야합니까 : (나는 방법 중 몇 가지를 ommited) 내 사용자 지정 역할 공급자가이처럼

<roleManager enabled="true" defaultProvider="MyCustomProvider"> 
    <providers> 
    <add name="MyCustomProvider" type="MyRoleProvider" /> 
    </providers> 
</roleManager> 

:

public class MyRoleProvider : RoleProvider { 
     public override string ApplicationName { 
       get { throw new NotImplementedException(); } 
       set { throw new NotImplementedException(); } 
     } 
     public override bool RoleExists(string roleName) 
     { 
       throw new NotImplementedException(); 
     } 
     public override bool IsUserInRole(string username, string roleName) 
       return true; 
     } 
} 

내가 뭘 잘못하고 있니? (나는 이것에 아주 새롭다).

+0

답변 해 주셔서 감사합니다. 지금까지 내가 가지고 있었던 것에는 아무런 문제가 없었지만, 나는 많은 멤버들에게 실제 구현을 놓치고 있었다. – ojcar

답변

4

, 인텔리와 재정 구성원의 내용을 기입합니다

throw new NotImplementedException(); 

당신은 아마 알다시피, 같은 RoleProvider 클래스와 추상 클래스에서 상속 할 때 그 클래스의 모든 추상 멤버가 구현되어야합니다. 비주얼 스튜디오는 위의 코드를 기본적으로 채우기 위해 멤버를 재정의 할 때 선택합니다. 그대로두면 프로젝트가 구현 된 이후에 프로젝트를 빌드 할 수 있지만 런타임에 예외가 발생합니다. 이는 .net 프레임 워크가 예외를 throw하는 메소드를 호출하기 때문입니다.

당신이해야 할 일은 throw 문을 제거하고 해당 메서드 나 속성의 논리를 구현하는 것입니다. 따라서 IsUserInRole 메서드의 경우 사용자가 사용하는 저장소 (SQL 데이터베이스, XML 파일 등)를 확인하고 사용자가 역할에 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.

0

RoleExists 방법으로 NotImplementedException을 던지고 있습니다. 일시적으로 return true;으로 변경하면 모든 것이 정상적으로 처리됩니다. 당신이 특히 비주얼 스튜디오에서 사용자 지정 공급자를 만들 때

관련 문제