2017-12-06 14 views
0

오류 : MongoDB를비밀번호 mongoDB의 특별한 Charecter 문제입니까?

에서 비밀번호 특수 문자 문제

코드 :

connstr="mongodb://test:[email protected]@67.186.193.192:27017/testdb" 

여기 난에 "테스트 % 4123" "123 @ 테스트"암호를 변경했습니다. 왜냐하면 @ ASCII 코드는 % 4입니다. 이제 제대로 작동합니다.

MongoClient client = new MongoClient(connstr); //vss 
var server = client.GetServer(); 

//server.Ping(); 
var db = client.GetDatabase(dbname); 
List<KeyValuePair<string, string>> collections = new List<KeyValuePair<string, string>>(); 
var tableviewset = JArray.Parse(db.ListCollectionsAsync().Result.ToListAsync<BsonDocument>().Result.ToJson()); 

하지만 내 사용자는 $ 같은 다른 암호를 사용합니다, ^, *, 당신은 이런 식으로 뭔가를해야만?

+0

@ serpent5 암호 문제 인 것을 발견했습니다. 그래서 위의 질문에 대한 해결책이 필요합니다 ... –

+1

분명히 URL을 인코딩 ... 워드 프로세서, 구글, 분석 및 실행 ... –

+0

사용자 이름, 암호 등은 어디에서 유래합니까? 구성 파일에 있습니까? –

답변

0

할 수있는 내가 뭘 (... 등이 상황에서 그래서, 당신이 할 수있는 사용자 MongoClientSettings 암호 및 다른 모든 매개 변수에 대한 그 후

private MongoClientSettings GetSecuritySettingForConnection() 
     { 
      MongoClientSettings settings = new MongoClientSettings(); 
      settings.Server = new MongoServerAddress(host, port); 
      MongoIdentity identity = new MongoInternalIdentity(authenticationDatabase, userName); 
      MongoIdentityEvidence evidence = new PasswordEvidence(password); 
      settings.Credentials = new List<MongoCredential>() 
      { 
       new MongoCredential("SCRAM-SHA-1", identity, evidence) 

      }; 
      settings.MaxConnectionIdleTime = new TimeSpan(0, 2, 0); 
      return settings; 
     } 

할 수 있습니다 여기에이 기능 :.

var client = new MongoClient(GetSecuritySettingForConnection()); 

혼란이 있으면 알려주세요.