2012-03-02 9 views
5

Tengo un AppSetting en web.config.ConfigurationManager.AppSettings convierte " n" en "\ n" ¿por qué?

<add key="key" value="\n|\r"/> 

cuando lo leí por ConfigurationManager.AppSettings["key"] Da "\\ n | r \\". ¿Por qué?

+0

Su pregunta no coincide con el título correctamente ... – cjk

+0

@cjk: ¿por qué u piensa así? por favor lea la pregunta cuidadosamente. –

+0

Lo actualizaste ahora. ¿Está en el depurador que está viendo '\\ n | \\ r'? – cjk

Respuesta

3

En el depurador, debido a que la barra diagonal inversa es un carácter especial utilizado para elementos como pestañas (\ t) y terminaciones de línea (\ n), debe escaparse mediante el uso de otra barra invertida. Por lo tanto, cualquier texto que contenga un \ real se mostrará como \. Si lo imprime en un archivo o lo usa de cualquier otra manera, encontrará que su cadena solo contiene el uno.

Esto no se ConfigurationManager haciendo nada.

0
string str = "\n";// means \n 
string str1 = @"\n";// means \\n 

De AppSettings, parece que al extraer el valor de la clave, se envuelve @ internamente .. Se realiza mediante el compilador no en tiempo de ejecución.

1

He resuelto el mismo problema con un reemplazo cadena. No
preciosa .. pero funciona!

ConfigurationManager.AppSettings["Key"].Replace("\\n", "\n") 
+0

gracias salvado mi día // –

1

La sintaxis de escape de barra invertida solamente se reconocen en el interior de los literales de cadena por el compilador de C#. Debido a que su cadena se está leyendo desde un archivo XML en tiempo de ejecución, es necesario utilizar compatibles con XML escape (entidades de caracteres) con el fin de incluir a los personajes de la cadena. Por lo tanto, su entrada configuración de la aplicación debe tener el siguiente aspecto:

<add key="key" value="&x10;|&x13;"/> 

Porque 10 y 13 son los valores hexadecimales para el avance de línea y retorno de carro, respectivamente.

Como dijo cjk, el depurador está insertando la barra adicional para indicar que está viendo una barra literal y no una secuencia de escape.

Cuestiones relacionadas