Предотвратить Процентное Преобразование Символов - PullRequest
8 голосов
/ 28 июня 2011

Я пытаюсь использовать Web Deployment Toolkit с нашим проектом MVC3, и в целом развертывание работает нормально, но в нашей строке подключения к базе данных есть пароль, содержащий символ процента (%), за которым следуют два числа.Похоже, что инструментарий развертывания превращает это в замену шестнадцатеричного символа.Есть ли способ предотвратить замену этого символа и при этом сохранить строку подключения пригодной для использования на компьютерах разработчиков?Я попытался вставить замену в файл Web.Debug.Config и даже добавить% 25 вместо просто%, чтобы попытаться заменить его только символом%, а он все еще заменяет полное значение.

Пример:

<connectionStrings>
    <add name="MyDB" connectionString="server=Server1;uid=user1;pwd=abc123%72;database=Database1;"
</connectionStrings>

заменяется на

<connectionStrings>
    <add name="MyDB" connectionString="server=Server1;uid=user1;pwd=abc123r;database=Database1;"
</connectionStrings>

Ответы [ 2 ]

11 голосов
/ 31 марта 2012

Установите pwd-часть строки подключения на:

pwd = abc123% 252572

После долгих проб и ошибок я обнаружил, что Это делает двойной проход,Первый проход преобразует % 2525 в % 25 , второй проход преобразует % 25 в % .Вот почему, когда вы использовали% 2572, это привело к r (% 72 - это код Unicode для r).Это мне кажется ошибкой в ​​парсере.Возможно, кто-то более знающий может дать лучшее объяснение.

0 голосов
/ 27 августа 2014

Я столкнулся с точно такой же проблемой (конечно, с другим паролем).

Чтобы строка подключения к базе данных работала на машинах разработчика, я изменил параметры публикации, чтобы использовать«разные» строки подключения.

Для вашего примера: web.config будет содержать:

<connectionStrings>
<add name="MyDB" connectionString="server=Server1;uid=user1;pwd=abc123%72;database=Database1;"
</connectionStrings>

В проекте настроек публикации щелкните правой кнопкой мыши проект, выберите публикацию ..., перейдите в настройки-> базы данных.Для базы данных MyDB введите

 server=Server1;uid=user1;pwd=abc123%72;database=Database1;

Это позволило моей машине разработчика сохранить соединение с базой данных, а хост-машине автоматически использовать правильную строку соединения как путем публикации напрямую, так и через teamcity.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...