c# - modificar - Obtener usuario y contraseña de ConnectionStringSettings
obtener cadena de conexion app config c# (11)
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.
¿Cómo puedo obtener el usuario y la contraseña de tal conexión en la aplicación .config con una función .NET?
Por supuesto, 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>
Si necesita un enfoque más genérico para analizar la cadena de conexión (uno que no trata los detalles de un proveedor de base de datos) también puede usar
System.Data.Common.DbConnectionStringBuilder
que es una clase base para otras clases como SqlConnectionStringBuilder etc.
Puede crear una instancia de DbConnectionStringBuilder y, en mi caso, necesitaba tener una cadena de conexión configurable de la que pudiera obtener información, independientemente del tipo de proveedor de la base de datos. Algunas opciones si necesita esta flexibilidad (podría crear el ConnectionStringBuilder apropiado para su proveedor, como han sugerido otros), esto probablemente se requiera para la mayoría de los casos en los que se necesitan propiedades específicas del proveedor.
O si desea leer solo un par de propiedades genéricas, podría usar DbConnectionStringBuilder si solo necesita el ID de usuario y la contraseña, por ejemplo.
Este ejemplo debería funcionar para CUALQUIER cadena de conexión que incluya el ID de usuario y la contraseña.
DbConnectionStringBuilder db = new DbConnectionStringBuilder();
db.ConnectionString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
var username = db["User Id"].ToString();
var password = db["Password"].ToString();
Solo para agregar un poco a la respuesta de Tomas Walek.
Este enfoque solo funcionaría si la "ID de usuario" en la cadena de conexión está en mayúsculas 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 { }
}
}
agregue una referencia a System.Configuration y luego use: using 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;
otra forma es usar la expresión regular (lo que hice), con un patrón más indulgente, para manejar diferentes formas en que se podría proporcionar una identificación de usuario en la cadena de conexión:
public static string GetUserIdFromConnectionString(string connectionString)
{
return new Regex("USER//s+ID//=//s*?(?<UserId>//w+)",
RegexOptions.IgnoreCase)
.Match(connectionString)
.Groups["UserId"]
?.Value;
}
usar el ConnectionBuilderClass
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder("Your connection string");
string password = builder.Password;
junto con la
string connString = ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString;
lograr esto.
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]);
var builder = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString)
var user = builder.UserID;
var password = builder.Password;
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);
}
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 la configuración de búsqueda puede usar lo que quiera "Usuario Es" o contraseña.
SqlConnectionStringBuilder con = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString);
string myUser = con.UserID;
string myPass = con.Password;