Работает ли Firebird ADO.NET 4.10.0.0 поставщик данных с Firebird 3.0?
В настоящее время я пытаюсь подключить свой проект ASP.net 4.5 к недавно выпущенному Firebird 3.0.
Я использую Visual Studio 2015 Community Edition, Firebird 3 (64-разрядная версия) и использовал NuGet для получения ADO.NET 4.10.0.0.
Однако, когда я пытаюсь подключиться, я получаю исключение со следующим сообщением:
this.connect.ServerVersion выдал исключение типа 'System.InvalidOperationException'
Некоторые другие сообщения, которые я получаю:
Сообщение: "Соединение закрыто"
Источник: FirebirdSQL.Data.Fierbird.Client
Трассировки стека:
в FirebirdSql.Data.FirebirdClient.FbConnection.get_ServerVersion() в C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnection.line:
IBExpert подключается без проблем.
Эта среда ранее работала с Firebird 2.5 и более старой ADO.Net
Лучшее предположение сейчас состоит в том, что это не поддерживается, но мое исследование онлайн было неокончательным (из того, что я мог найти, были признаки того, что оно было протестировано с Firebird 3 RC1)
Если бы кто-нибудь мог указать мне правильное направление, чтобы это продолжалось, это было бы здорово.
Заранее спасибо!
1 ответ
Я отвечаю на это, предполагая, что вы установили Firebird 3 и не изменили ни одной его конфигурации. По умолчанию установка Firebird 3 будет иметь некоторые строгие настройки безопасности:
- Он будет поддерживать только новую модель аутентификации SRP
- Это потребует проводного протокола шифрования
Это означает, что драйверы (например, поставщик Firebird .NET 4.10), которые еще не поддерживают модель аутентификации SRP и шифрование по проводному протоколу, не смогут подключаться "из коробки".
Чтобы иметь возможность подключиться, вам нужно будет сделать следующее
- Включить устаревшую модель аутентификации
- Понизьте настройку шифрования проводного протокола с обязательного до включенного
- Создайте пользователя в устаревшей модели аутентификации
Все эти шаги требуют правки firebird.conf
, Если вы установили Firebird в Program Files
Вам нужно убедиться, что ваш редактор работает от имени администратора, чтобы иметь возможность сохранить изменения.
Включить устаревшую аутентификацию
Чтобы включить устаревшую аутентификацию, вам нужно отредактировать или добавить следующую строку в firebird.conf
: (обратите внимание, что строки с префиксом #
Есть комментарии!)
AuthServer = Srp, Legacy_Auth
Понизить код шифрования проводного протокола
Чтобы понизить настройки шифрования проводного протокола, вам нужно отредактировать или добавить следующую строку в firebird.conf
:
WireCrypt = Enabled
Создайте устаревшего пользователя аутентификации
Чтобы иметь возможность создать пользователя в устаревшей модели аутентификации, вам нужно включить устаревший плагин usermanager, отредактировав или добавив следующую строку в firebird.conf
:
UserManager = Srp, Legacy_UserManager
После внесенных выше изменений перезапустите Firebird, подключитесь к (любой) базе данных Firebird 3 с помощью вашего любимого инструмента управления базами данных с помощью SYSDBA или другой учетной записи администратора и создайте пользователя с помощью Legacy_UserManager с CREATE USER
(заменить имя пользователя и пароль legacy
с подходящими значениями):
CREATE USER legacy PASSWORD 'legacy' USING PLUGIN Legacy_UserManager
Обязательно совершите коммит, иначе пользователь на самом деле не создан.
Теперь вы сможете подключиться из C#, используя только что созданного пользователя.
Это также описано в примечаниях к выпуску Firebird 3, глава 12 "Проблемы совместимости, устаревшая аутентификация".
С помощью gsec
или функциональность служб для создания пользователей устарела. Если вы все еще хотите использовать любой из них для создания пользователей в устаревшей модели аутентификации, вам нужно отредактировать firebird.conf
и положи Legacy_UserManager
первый в списке.
Поддержка в Firebird .NET провайдере версии 5.0.0.0 и выше
Обратите внимание, что в версии 5.0.0.0 поставщика Firebird .NET добавлена поддержка SRP (без шифрования по проводному протоколу). Таким образом, в версии 5 поставщика Firebird .NET вы можете использовать новую модель аутентификации. Просто убедитесь, что вы понизили шифрование проводного протокола (настройка WireCrypt
) от Required
(по умолчанию) Enabled
как описано выше.