Как добавить амперсанд для значения в значении файла конфигурации приложения ASP.net/C#

209

У меня есть программа на C # со значениями в файле конфигурации. То, что я хочу, это хранить амперсанды для значения URL, как ...

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

Но я получаю ошибки при создании моего сайта. Амперсанд не допускается. Я пробовал разные формы выхода из амперсандов, но безрезультатно. Кто-нибудь знает правильную форму для этого? Все предложения приветствуются.

Роб Сигал
источник

Ответы:

420

Используйте " &amp;" вместо "&".

Эрик Розенбергер
источник
2
Я серьезно думал, что я попробовал это. Я думаю, что пропустил завершающий ";" в конце. В любом случае, это работает, поэтому спасибо за отзыв, Эрик.
Роб Сигал
6
Это работает, но я должен указать строку. Замените ("& amp;", "&"), где бы я ни обращался к этому параметру, иначе браузер не сможет правильно определить его, когда вы нажмете на ссылку: /
DLeh
Ну ... это довольно разочаровывает. Я имею в виду, что ConfigurationManager автоматически не удаляет эти & xyl; символы при получении их из файла конфигурации.
Efrain
@Efrain не уверен, о чем конкретно говорит DLeh, но unescape определенно работает нормально. Только что протестировал это как со стандартным, appSettingsтак и с пользовательским NameValueCollectionразделом: амперсанд правильно экранирован на обоих.
Jullealgon
@DLeh Если вы работаете с ViewBag в файле .cshtml, вам нужно будет позвонить Html.Rawв ваш файл .cshtml, чтобы предотвратить его экранирование средой.
user700390
25

Вы пробовали это?

<appSettings>  
  <add key="myurl" value="http://www.myurl.com?&amp;cid=&amp;sid="/>
<appSettings>
BenAlabaster
источник
0

Хотя принятый здесь ответ является технически правильным, среди пользователей, похоже, есть некоторая путаница, основанная на комментариях. При работе с ViewBag в файле .cshtml вы должны использовать его, в @Html.Rawпротивном случае ваши данные после того, как ConfigurationManager не будет удален, снова будут экранированы. Используйте, Html.Raw()чтобы предотвратить это.

user700390
источник