Побег цитата в интернете.строка подключения конфигурации
у меня есть строка подключения в web конфигурации:
<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"word" providerName="System.Data.SqlClient" />
Как вы видите, в пароле есть знак цитаты ( " ) (Данный из другого отдела. Я не могу изменить этот пароль пользователей БД).
Как мне избежать кавычки в этой строке подключения?
кстати: я уже пробовал " в строке. Это не сработало ... ado.net затем получил исключение ArgumenException: "формат строки инициализации не соответствует спецификации, начиная с индекса 57." 57-это где " находится в моей строке подключения. Я также попытался вложить часть пароля в ' - тоже не сработало.
также пробовал ""и " - web.конфигурация не может быть проанализирована тогда.
Спасибо за решение:
мне пришлось объединить экранирование двойной кавычки и поставить пароль в одинарные кавычки:
<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass"word'" providerName="System.Data.SqlClient" />
5 ответов:
использовать
"
вместо"
чтобы избежать этого.web.config-это XML-файл, поэтому вы должны использовать XML-экранирование.
connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"word"
посмотреть этой ветке форума.
обновление:
"
должно работать, но так как это не так, вы пробовали некоторые другие строки escape-последовательности для .NET?\"
и""
?обновление 2:
попробуйте одинарные кавычки для connectionString:
connectionString='Server=dbsrv;User ID=myDbUser;Password=somepass"word'
или:
connectionString='Server=dbsrv;User ID=myDbUser;Password=somepass"word'
обновление 3:
С MSDN (SqlConnection.Свойство ConnectionString Объекта):
чтобы включить значения, содержащие точку с запятой, символ одинарной кавычки или символ двойной кавычки, значение должно быть заключено в двойные кавычки. Если значение содержит точку с запятой и символ двойной кавычки, его можно заключить в одинарную кавычку символика.
так:
connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass"word'"
проблема не с web.config, но формат строки подключения. В строке подключения, если у вас есть
"
в значение (пары ключ-значение), вы должны заключить значение в'
. Так, в то время какPassword=somepass"word
не работает,Password='somepass"word'
делает.
connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"word"
С интернет.config-это XML, вам нужно избежать пяти специальных символов:
&
->&
амперсанд, U + 0026<
-><
левый угловой кронштейн, меньше знака, U + 003C>
->>
прямоугольный кронштейн, больше, чем знак, U + 003E"
->"
кавычки, U + 0022'
->'
Апостроф, U+0027+ - это не проблема, я полагаю.
ответ Odeds почти завершен. Только одну вещь, чтобы добавить.
- побег xml специальные символы, как сказал Эмануэль греко.
- поместите пароль в одинарные кавычки, как сказал Одед
- (это один новый) побег одиночные тики с другой один тик ( ref)
имея этот пароль="'; это должно быть допустимой строкой подключения:
connectionString='Server=dbsrv;User ID=myDbUser;Password='"&&;'