Строка подключения web.config изменяется при публикации

У меня есть строка подключения в моем web.config, которая включает пароль с символом%, как показано ниже.

<add name="ConnectionName" 
providerName="System.Data.SqlClient" 
connectionString="server=ServerName;database=DatabaseName;
uid=UserName;password=abcde%F9abcd;" />

Локально в VS2013 строка подключения работает нормально, но при публикации на веб-сервере IIS8 через VS2013 и веб-развертывание что-то в этом процессе манипулирует XML и изменяет раздел пароля строки на следующий

password=abcdeùabcd

Так что это превращает %F9 в ù (преобразование юникода).

Я попытался закодировать% в &#25;, что не решает проблему.

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


person Alex.Ritna    schedule 13.03.2014    source источник
comment
Комментарий удален после более внимательного изучения   -  person failedprogramming    schedule 14.03.2014
comment
Вы 1) меняете свой пароль, 2) используете Integrated Security=True и не устанавливаете пароль 3) устанавливаете UTF-8 для файлов в web.config   -  person Aristos    schedule 14.03.2014
comment
1) Я уже объяснил, что это предоставлено третьей стороной и не может быть изменено, 2) См. № 1, 3) UTF8 уже установлен в web.config. Наверняка кто-то еще сталкивался с этой проблемой, поскольку она, похоже, влияет не только на строки подключения... она будет делать это с любыми данными в любом месте файла web.config.   -  person Alex.Ritna    schedule 14.03.2014
comment
Взгляните на свой процесс сборки на предмет всего, что могло быть настроено. Возможно, вам придется посмотреть XML-код сборки напрямую, чтобы найти все.   -  person Adam Zuckerman    schedule 14.03.2014
comment
Тот факт, что он превращает %F9 в ù, говорит мне, что где-то в конце строки пароль декодируется URL. Кодированное значение URL % равно %25.   -  person The Muffin Man    schedule 14.03.2014
comment
Это тоже мое предположение, скорее всего, с помощью веб-развертывания. Я не могу найти какую-либо документацию или других пользователей, столкнувшихся с проблемой в моем поиске.   -  person Alex.Ritna    schedule 14.03.2014


Ответы (3)


Во время публикации .NET предполагает, что вы разместили закодированные значения в настройках, и в процессе публикации он декодирует эти значения, что вызывает проблему. Таким образом, закодированное значение вашей строки подключения — «abcde%25F9abcd». Используйте это значение в файле web.config или поместите его отдельно на вкладке настроек диалогового окна «Публикация», как я сделал в связанном изображении. Это решает проблему.

Надеюсь, это сработает для вас.

Публикация веб-сайта – вкладка "Настройки"

person Umair Hafeez    schedule 14.03.2014

Вы должны следовать стандартам XML

Согласно спецификациям Консорциума World Wide Web (w3C), существует 5 символов, которые не должны появляться в их буквальной форме в XML-документе, за исключением случаев, когда они используются в качестве разделителей разметки или в комментариях, инструкциях по обработке или в разделе CDATA. . Во всех остальных случаях эти символы должны быть заменены либо соответствующей сущностью, либо числовой ссылкой в ​​соответствии со следующей таблицей:

введите здесь описание изображения

Ссылка на именованный символ (апостроф, U+0027) была введена в XML 1.0, но не появляется в HTML. Поэтому авторам следует использовать ' вместо того, чтобы работать должным образом в пользовательских агентах HTML 4. Пожалуйста, посетите - http://www.w3.org/TR/2002/REC-xhtml1-20020801/#C_16

person KSB    schedule 14.03.2014

Web.Config — это не что иное, как файл XML. Поэтому вместо специальных символов вы должны использовать соответствующие значения замены. На самом деле «%» не разрешен, потому что XML будет читать его как какой-то другой специальный символ. Вот почему он заменяет «% F9» каким-то другим значением.

person Prasanth    schedule 14.03.2014