2017-02-21 40 views
0

Я не могу заставить строку подключения Npgsql работать. Я попробовал несколько способов, напримерИсключение Npgsql в строке подключения

NpgsqlConnection conn = new NpgsqlConnection("Server=192.168.1.220;User Id=pgsql;Password=pgsql;Database=pgsql;"); 

или

var conn = new NpgsqlConnection("Host=192.168.1.220;Username=pgsql;Password=pgsql;Database=pgsql"); 

и бросает мне исключение:

The type initializer for 'Npgsql.NpgsqlConnectionStringBuilder' threw an exception.

Im работает Windows XP 64bit с VS 2010. Я уже пробовал для соединения с этой машиной с моим сервером pgsql с использованием ODBC или pgAdmin III - оба работают нормально.

Возможно, эта проблема связана с моей установкой Npgsql? я не смог установить его с NuGet, потому что я получил следующую ошибку:

PM> Install-Package Npgsql Installing 'Npgsql 3.2.1'. Successfully installed 'Npgsql 3.2.1'. Adding 'Npgsql 3.2.1' to Project. Uninstalling 'Npgsql 3.2.1'. Successfully uninstalled 'Npgsql 3.2.1'. Install failed. Rolling back... Install-Package : Could not install package 'Npgsql 3.2.1'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.0,Profile=Client', but the packag e does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author. At line:1 char:16 + Install-Package <<<< Npgsql + CategoryInfo : NotSpecified: (:) [Install-Package], InvalidOperationException + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand

Я пытался также для переключения целевой рамки 4.0 или 3.5, но результат был точно таким же. Итак, я установил Npgsql, просто извлекая DLL из MSI-установки, а затем загрузив его в качестве ссылки.

Кто-нибудь знает, как заставить строку подключения работать?

+0

Из вашего исключения установки nuget, похоже, вы пытаетесь установить Npgsql в проект .NET Framework 4.0 - это не поддерживается. Самая низкая поддерживаемая версия - 4.5. –

+0

Если вы все еще получаете исключение в приложении .NET 4.5 (или более поздней версии), разместите полное исключение, которое вы получаете, включите полную трассировку стека и любые внутренние исключения. Невозможно узнать, что происходит, просто «Инициализатор типа выбросил исключение». –

+0

Кажется, что проблема была такой же, как и вы, но мне нужен .NET 4.0, чтобы он запускался на WinXP, поэтому я решил свою проблему, переключившись с Npgsql на базовую библиотеку pgsql Devart. Спасибо. – geosys

ответ

0

Вы забыли о порте. Возможно, это и есть причина. Стандартный PostgreSQL сервер прослушивает порт 5432.

NpgsqlConnection conn = new NpgsqlConnection("Server=192.168.1.220;Port=5432;User Id=pgsql;Password=pgsql;Database=pgsql;"); 

Example Connection String

Может быть, у вас есть не библиотека Mono.Security.dll. Это необходимо в более старой версии менее 3.0 или включен системный брандмауэр?

+0

Благодарим за сообщение, но это не помогает, у меня такая же ошибка. Брандмауэр отключен и им удалось подключиться к серверу с этого аппарата, используя pgAdmin ||| или ODBC. – geosys

+0

Возможно, у вас нет библиотеки Mono.Security.dll. Это необходимо в более ранней версии менее 3.0. – elcudro

+0

Порт не является обязательным, Npgsql будет использовать порт 5432 по умолчанию. –

 Смежные вопросы

  • Нет связанных вопросов^_^