2017-02-21 55 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.

進出口運行Windows XP 64位與2010年VS我已經嘗試過使用ODBC或pgAdmin III從該機器連接到我的pgsql服務器 - 兩者都可以。

可能是這個問題與我的安裝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,但結果是完全一樣的。 因此,我簡單地通過從MSI安裝中提取.dll來安裝Npgsql,然後將其作爲參考加載。

有誰知道如何使連接字符串工作?

+0

從你的NuGet安裝例外,它會像你想安裝Npgsql的到.NET Framework 4.0中的項目 - 這是不支持的。最低支持版本是4.5。 –

+0

如果您仍然在.NET 4.5(或更高版本)應用程序中遇到異常,請發佈完整的異常,包括完整的堆棧跟蹤和任何內部異常。只是「類型初始值設定項引發異常」,不可能知道發生了什麼。 –

+0

看來這個問題與你所描述的完全一樣,但我需要.NET 4.0使它在WinXP上運行,所以我通過從Npgsql切換到Devart基本pgsql庫來解決了我的問題。謝謝。 – 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。 –