c# - reconocida - ¿Cómo incluir el ampersand en la cadena de conexión?
la cadena de conexion de la bd esta equivocada (1)
Tendrá que usar secuencias de escape como lo haría para cualquier documento XML, que son todos los archivos .config.
- Ampersand = & =
&
- Mayor que => =
>
- Menos de = <=
<
- Apostrophe = ''=
'
- Cita = "=
"
También puede usar la etiqueta CDATA
para que pueda usar estos caracteres ilegales
<![CDATA[
y termina con ]]>
<connectionStrings>
<add name="MyEntities" connectionString="
metadata=res://*/MyDataModel.csdl|res://*/MyDataModel.ssdl|res://*/MyDataModel.msl;
provider=System.Data.SqlClient;
provider connection string="
Data Source=localhost/DEV;
Initial Catalog=MyDB;UserId=myUser;
Password=<![CDATA[jack&jill]]>;
MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" />
</connectionStrings>
Estoy usando Entity Framework 4 para una aplicación simple y me gustaría hornear mis credenciales de conexión en la siguiente cadena de conexión:
<connectionStrings>
<add name="MyEntities"
connectionString="metadata=res://*/MyDataModel.csdl|res://*/MyDataModel.ssdl|res://*/MyDataModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=localhost/DEV;Initial Catalog=MyDB;UserId=myUser;Password=jack&jill;MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" />
</connectionStrings>
Sin embargo, la contraseña (que no puedo cambiar) contiene un ampersand. ASP.NET throws: Configuration Error: An error occurred while parsing EntityName. Line XX, position YYY.
Configuration Error: An error occurred while parsing EntityName. Line XX, position YYY.
Si reemplazo el ampersand en la contraseña con &
, Obtengo una SqlException: Login failed for user ''myUser''.
Por lo general, este truco funciona, pero supongo que algo está fallando porque técnicamente es una cadena de conexión dentro de una cadena de conexión.
¿Qué debería hacer aquí? La mayoría de mis clases incluyen código como:
using (var context = new MyEntities()) {
// do work
}
Actualización: Resulta que las credenciales que estoy usando son una cuenta de dominio, entonces lo que realmente necesito es Integrated Security=True
en la cadena de conexión en lugar de una contraseña.
La codificación del signo y como se indica en la respuesta aceptada debería funcionar bien, aunque no lo he probado.