2010-01-22 3 views
1

내 응용 프로그램에서 .Net의 SqlMembershipProvider 및 SqlRoleProvider를 사용하여 사용자 관리를하고 싶습니다. 내 문제는 응용 프로그램이 시작될 때 db 연결 정보를 알 수 없다는 것입니다. 보안을 위해 데이터베이스 서버에서 실행중인 WCF 서비스에서이 정보를 가져와야합니다. 따라서 회원 자격/역할 제공 업체를 사실대로 구축해야합니다.. connectionString없이 Net RoleProvider

는 내가 멤버 자격 공급자를 만들고 추가 해결 할 수있었습니다 생각 : 나는, 지금까지 RoleProvider를 만들 비슷한 일을 일을 할 수 없게되었습니다

// register membership provider 
var membership = new SqlMembershipProvider(); 
var providerValues = new NameValueCollection(); 
providerValues.Add("name", "sqlMembershipProvider"); 
providerValues.Add("applicationName", "/"); 
providerValues.Add("connectionStringName", "connectionStrDynamAddedToConfig"); 
providerValues.Add("maxInvalidPasswordAttempts", "10"); 
membership.Initialize("sqlMembershipProvider", providerValues); 

. 공급자를 만들 수는 있지만 공급자를 역할 관리자에 추가 할 수는 없습니다. 이미 초기화 된 connectionString을 사용할 수있는 사용자 정의 공급자를 만들어야합니까?

답변

0

내가 "는 ProviderToolkitSamples을 다운로드하고 SQLConnectionHelper 클래스를 수정. 특히,이 같은 것을 보이는 GetConnectionString 기능"

internal static string GetConnectionString(string specifiedConnectionString, bool lookupConnectionString, bool appLevel) 
{ 
     if (specifiedConnectionString == null || specifiedConnectionString.Length < 1) 
      return null; 

     string connectionString = null; 

     ///////////////////////////////////////// 
     // Step 1: Check <connectionStrings> config section for this connection string 
     if (lookupConnectionString) 
     { 
      ConnectionStringSettings connObj = ConfigurationManager.ConnectionStrings[specifiedConnectionString]; 
      if (connObj != null) 
       connectionString = connObj.ConnectionString; 

      if (connectionString == null) 
       return null; 
     } 
     else 
     { 
      connectionString = specifiedConnectionString; 
     } 

     return connectionString; 
    } 
} 

텍스트는 것과 이후, williablog.net에서 해제 권장하는 this page 가로 질러 페이지에 "링크에 시간이 흐트러진 방식이 있습니다."