¿Cómo puedo agregar un ampersand para un valor en un valor de archivo de configuración de la aplicación ASP.net/C#


209

Tengo un programa C # con valores en un archivo de configuración. Lo que quiero es almacenar símbolos para un valor de URL como ...

<appSettings>
  <add key="myurl" value="http://www.myurl.com?&cid=&sid="/>
</appSettings>

Pero recibo errores al construir mi sitio. El ampersand no está permitido. He intentado varias formas de escapar de los símbolos en vano. Alguien sabe de la forma correcta para hacer esto? Todas las sugerencias son bienvenidas.

Respuestas:


420

Use " &amp;" en lugar de "&".


2
En serio pensé que había intentado esto. Creo que me perdí el ";" al final. De todos modos funciona, así que gracias por los comentarios de Eric.
Rob Segal

66
Esto funciona, pero tengo que poner una cadena. Reemplazar ("& amp;", "&") cada vez que accedo a esta configuración, o el navegador no lo detectará correctamente cuando haga clic en el enlace: /
DLeh

Bueno ... eso es bastante decepcionante. Quiero decir, que ConfigurationManager no escapa automáticamente de estos & xyl; caracteres al obtenerlos del archivo de configuración.
Efrain

@ No te quedes exactamente de lo que DLeh está hablando exactamente, pero unescape definitivamente funciona bien. Acabo de probar esto con appSettingsuna NameValueCollectionsección estándar y una personalizada : ampersand no está escapado correctamente en ambos.
julealgon el

@DLeh Si está trabajando con una ViewBag en un archivo .cshtml, necesitará llamar Html.Rawa su archivo .cshtml para evitar que el marco lo escape.
user700390

25

¿Has probado esto?

<appSettings>  
  <add key="myurl" value="http://www.myurl.com?&amp;cid=&amp;sid="/>
<appSettings>


0

Aunque la respuesta aceptada aquí es técnicamente correcta, parece haber cierta confusión entre los usuarios según los comentarios. Cuando trabaje con una ViewBag en un archivo .cshtml, debe usar @Html.Rawsus datos, de lo contrario, después de que el ConfigurationManager no haya escapado, volverá a escapar una vez más. Úselo Html.Raw()para evitar que esto ocurra.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.