2010-07-05 24 views
61

tengo una cadena de conexión en mi web config:escape cita en la cadena de conexión web.config

<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"word" providerName="System.Data.SqlClient" /> 

Como se ve, no es un signo de comillas (") en la contraseña (dada desde otro departamento I. no puede cambiar esta contraseña db usuarios)

Cómo hacer tengo que salir de la cita en esta cadena de conexión

BTW: ya he intentado & quot; en la cadena que no funcionó - preámbulos.?. .net obtuvo una ArgumenException y luego: "El formato de la cadena de inicialización no conforme a la especificación que comienza en el índice 57. " 57 es donde el & quot; está en mi cadena de conexión. También traté de adjuntar la parte de contraseña en '- tampoco funcionó.

También probamos "" y \" - web.config no se puede analizar a continuación

Gracias por la solución:

que tenía que combinar el escape de la doble cotización y poner la contraseña en. comillas simples:

<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass&quot;word'" providerName="System.Data.SqlClient" /> 

Respuesta

78

uso &quot; en lugar de " de escapar de ella

Web.config es un archivo XML para que sh. Debería usar XML escaping.

connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass&quot;word" 

Ver this tema del foro.

actualización:

&quot; debería funcionar, pero como no es así, ¿ha tratado algunas de las otras secuencias cadena de escape para .NET? \" y ""?

Actualización 2:

Trate comillas simples para la connectionString:

connectionString='Server=dbsrv;User ID=myDbUser;Password=somepass"word' 

O:

connectionString='Server=dbsrv;User ID=myDbUser;Password=somepass&quot;word' 

Actualización 3:

Desde MSDN (SqlConnection.ConnectionString propiedad):

Para incluir los valores que contienen un punto y coma, el carácter de una sola cita, o el carácter de comillas dobles, el valor debe estar encerrado entre comillas dobles. Si el valor contiene un punto y coma y un comillas dobles, el valor se puede incluir entre comillas simples.

Así:

connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass&quot;word'" 

El problema no es con la web.config, pero el formato de la cadena de conexión. En una cadena de conexión, si tiene un " en un valor (del par clave-valor), debe adjuntar el valor en '. Entonces, aunque no funciona, Password='somepass"word' sí.

+0

Esto no funciona. Obvisivamente esto funcionaría, si estuviera en xml simple, pero no dentro de un valor de atributo. –

+0

@Sebastian P.R. Gingter - extraño que esto no funcione. ¿Has probado otras secuencias de escape? – Oded

+0

Sí. El Web.config entero no se puede analizar al usar "" y \ ". & quot; no se reemplaza con" dentro de la cadena y la cadena de consulta no se puede analizar dando como resultado el error indicado. Si fuera así de fácil, no habría preguntado aquí ;-) –

1

Utilice &quot; Eso debería funcionar.

+0

no. no funciona ya lo intenté antes de preguntar aquí ... no lo habría preguntado ... –

42
connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass&quot;word" 

Desde el web.config es XML, lo que necesita para escapar de los cinco caracteres especiales:

&amp; ->&signo, U + 0026
&lt; -><corchete izquierdo, signo menor que U + 003C
&gt; ->>soporte angular derecho, signo mayor que, U + 003E
&quot; -> marca "cita, U + 0022
&apos; ->'apóstrofe, U + 0027

+ no es un problema, supongo.

+0

Fue el signo de unión para mí, en una contraseña, almacenado en el web.config. Obvio, mientras que al mismo tiempo es bastante no obvio para rastrear. El error que un sitio web de Azure le proporciona cuando este es el caso en el archivo web.config: "La página no se puede mostrar porque se ha producido un error interno en el servidor". No parece escribir nada en los registros de errores tampoco. Gracias al OP por la pregunta y a usted por este recordatorio. –

3

si &quot; no funciona entonces intente &#34; en su lugar.

Cuestiones relacionadas