Como posso adicionar um e comercial para um valor em um valor do arquivo de configuração do aplicativo ASP.net/C#

209

Eu tenho um programa c # com valores em um arquivo de configuração. O que eu quero é armazenar e comercial para um valor de URL como ...

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

Mas eu recebo erros ao criar meu site. Oe comercial não é permitido. Eu tentei várias formas de escapar do e comercial sem sucesso. Alguém sabe a forma correta de fazer isso? Todas as sugestões são bem vindas.

Rob Segal
fonte

Respostas:

420

Use " &amp;" em vez de "&".

Eric Rosenberger
fonte
2
Eu pensei seriamente que tinha tentado isso. Eu acho que perdi a trilha ";" no fim. De qualquer forma, funciona, então obrigado pelo feedback Eric.
Rob Segal
6
Substitua ("& amp;", "&") sempre que eu acessar essa configuração, caso contrário o navegador não a detectará corretamente quando você clicar no link: /
DLeh
Bem ... isso é muito decepcionante. Quero dizer, que o ConfigurationManager não remove automaticamente esses & xyl; caracteres ao obtê-los do arquivo de configuração.
Efrain 27/10
@ Evite não ter certeza do que o DLeh está falando exatamente, mas o unescape definitivamente funciona bem. Acabei de testar isso com appSettingsuma NameValueCollectionseção padrão e personalizada : o e comercial não tem escapamento adequado nos dois.
amigos estão dizendo sobre julealgon
@DLeh Se você estiver trabalhando com um ViewBag em um arquivo .cshtml, precisará chamar Html.Rawseu arquivo .cshtml para evitar que ele seja escapado pela estrutura.
user700390
25

Você já tentou isso?

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

Embora a resposta aceita aqui seja tecnicamente correta, parece haver alguma confusão entre os usuários com base nos comentários. Ao trabalhar com um ViewBag em um arquivo .cshtml, você deve usar @Html.Rawseus dados, depois de não terem sido escapados pelo ConfigurationManager, serão recuperados novamente. Use Html.Raw()para impedir que isso ocorra.

user700390
fonte