C # Предотвращение ConnectionStringBuilder от экранирования пароля со знаком равенства - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть пароль, который я не могу изменить, и в нем есть знак равенства. При использовании OdbcConnectionStringBuilder это работает для паролей, которые не имеют знака равенства, но когда я делаю это, экранирует переменную. Это работает,

        builder.DataSourceName = "SERVER";
        builder.DatabaseFile = "THISSERV";
        builder.UserID = "DBA";
        builder.Password = "XU5%^YhZ";

И выдает следующую строку подключения

"UserID=DBA;Password=XU5%^YhZ;DatabaseFile=THISSERV;DataSourceName=SERVER"

Однако, если поставить знак равенства

        builder.DataSourceName = "SERVER";
        builder.DatabaseFile = "THISSERV";
        builder.UserID = "DBA";
        builder.Password = "XU5%^Yh=Z";

Создает следующую строку подключения с экранированным паролем.

"UserID=DBA;Password=\"XU5%^Yh=Z\";DatabaseFile=THISSERV;DataSourceName=SERVER"

Как я могу избежать этого? Предыдущий пример верен, но в моем приложении я также дешифрую пароль, который не влияет ни на что, если нет равных, я попытался поместить @ перед StringCipher, но это не сработало. Это выглядело бы так, если бы первый аргумент был переменной.

builder.Password = StringCipher.Decrypt("0jURE7f9aTOItD5tgl9E6YoBKhMRaxDVj1KfS0SJ/ZBxIKVVbVYZXHMKgndI", "JlkIUJdfolsdff352345rf")

1 Ответ

0 голосов
/ 01 сентября 2018

Вам необходимо заключить пароль в фигурные скобки { } согласно рекомендациям по экранированию строки соединения Odbc :

Значение DSN или строки подключения, заключенное в фигурные скобки ({}), которое содержит любой из символов [] {} (),;? * =! @ передается в целости водитель.

Так что называть это так должно работать:

builder.Password = "{XU5%^Yh=Z}";
...