2011-10-26 14 views
19

¿Cómo puedo obtener el usuario y la contraseña de un connectionString en la aplicación.config con una función .NET?Obtener usuario y contraseña de ConnectionStringSettings

Por supuesto que pude leer esa cadena y obtener el valor después de ID = y Contraseña =.

<connectionStrings> 
<add name="MyConString" connectionString="Data Source=(local);Initial Catalog=MyDatabase;Persist Security Info=True;User ID=MyUsername Password=MyPassword;Connect providerName="System.Data.SqlClient"/>  
</connectionStrings> 
+1

espero que dado cuenta de que le falta un ';". Después de 'MyUserName' - antes de 'contraseña' –

Respuesta

31

uso del ConnectionBuilderClass

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder("Your connection string"); 
string password = builder.Password; 


junto con el

string connString = ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString; 

para lograr esto.

+0

+1 Definitivamente la solución más simple. – Tim

+0

! yup gran respuesta – msfanboy

-2
var connString = ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString; 
var tokens = connString.Split(';'); 

string userId; 
string password; 

for(var i = 0; i < tokens.Length; i++) { 
    var token = tokens[i]; 
    if(token.StartsWith("User ID")) 
     userId = token.Substring(token.IndexOf("=") + 1); 

    if(token.StartsWith("Password")) 
     password = token.Substring(token.IndexOf("=") + 1); 
} 
+0

1 para la muestra de código Sin embargo, ¿no debería ser' token.Substring (token.IndexOf ("=") + 1); 'para quitar el" = "? – Tim

+0

@Tim: Gracias. Observado y editado: habla de off-by-one siempre alzando su cabeza fea :) –

1

, usted puede obtener la cadena de conexión de la siguiente

SqlConnectionStringBuilder yourconn = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString); 
string password = yourconn.Password; 

A continuación, puede obtener la subcadena que busca.

2
var builder = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString) 
var user = builder.UserID; 
var password = builder.Password; 
4
SqlConnectionStringBuilder con = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString); 
string myUser = con.UserID; 
string myPass = con.Password; 
-2
string connectionString = ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString; 
var tokens = connectionString.Split(';').Select(n => n.Split('='); 
string userId = tokens.First(n => n[0].Equals("User ID").Select(n => n[1]); 
string password = tokens.First(n => n[0].Equals("Password").Select(n => n[1]); 
0

sólo para añadir un poco a la respuesta de Tomás Walek.

Este enfoque solo funcionaría si "ID de usuario" en la cadena de conexión está en mayúscula correctamente. El proveedor de Oracle aceptó "ID de usuario" OK, pero SqlConnectionStringBuilder no funcionó.

public static class DbConnectionFactory 
{ 
    public static ConnectionStringSettings AppConnectionSettings = ConfigurationManager.ConnectionStrings["{A connection string name}"]; 
    public static SqlConnectionStringBuilder AppConnBuilder = new SqlConnectionStringBuilder(AppConnectionSettings.ConnectionString); 

    public static string DbUserID 
    { 
     get 
     { 
      return AppConnBuilder.UserID; 
     } 
     set { } 
    } 
} 
0

añadir una referencia a System.Configuration y luego usar: usando System.Configuration;

string MyDBConnection = ConfigurationManager.ConnectionStrings["MyDBConnection"].ConnectionString; 
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(MyDBConnection); 
string UserID = builder.UserID; 
string Password = builder.Password; 
string ServerName = builder.DataSource; 
string DatabaseName = builder.InitialCatalog; 
0
public static string GetConnectionSettings(string searchSetting) 
{ 
    var con = ConfigurationManager.ConnectionStrings["yourConnectionHere"]‌​.ConnectionString; 
    String[] myString = con.Split(';'); 
    Dictionary<string, string> dict = new Dictionary<string, string>(); 

    for (int i = 0; i < myString.Count(); i++) 
    { 
     String[] con3 = myString[i].Split('='); dict.Add(con3[0], con3[1]); 
    } 

    return dict[searchSetting]; 
} 

para searchSetting puede utilizar lo que quiere "usuario es" o la contraseña.

+0

GetConnectionSettings public static string (searchSetting cadena) {var con = ConfigurationManager.ConnectionStrings [ "yourConnectionHere"]; ConnectionString. string [] = miCadena con.Split (';'); Dictionary < cadena, cadena> dict = new Dictionary (); para (int i = 0; i Restauración del usuario y la contraseña 'root' eliminados para MySQL

  • 28. gvfs-mount especificar nombre de usuario contraseña
  • 29. Idea: ¿Crear usuario sin contraseña y luego requerir contraseña para usar la cuenta?
  • 30. y contraseña en problema de contraseña - php