2016-11-26 53 views
0

我有一個Debian傑西(I386)機單齊全,單XSP和PostgreSQL-9.5(從http://apt.postgresql.org/如何獲得Npgsql的連接到PostgreSQL 9.5

我有一個簡單的GridView你好,世界樣式頁面。 下面是Web.config文件的摘錄:

<compilation debug="true"> 
    <assemblies> 
    <add assembly="Npgsql, Version=2.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/> 
    </assemblies> 
</compilation> 
<system.data> 
    <DbProviderFactories> 
    <add name="Npgsql Data Provider" 
      invariant="Npgsql" 
      support="FF" 
      description ="Data Provider for PostgreSQL" 
      type="Npgsql.NpgsqlFactory, Npgsql" /> 
    </DbProviderFactories> 
</system.data> 
<system.web> 
    <customErrors mode="Off"/> 
    <trace enabled="true" localOnly="false" pageOutput="true" requestLimit="100" traceMode="SortByTime" /> 
</system.web> 
<connectionStrings> 
    <add name="SqlDataSource1" connectionString="Server=127.0.0.1,5432;Database=test;User ID=user;Password=password;" providerName="Npgsql"/> 
</connectionStrings> 

(改變版本爲 「4.0.0.0」 的組裝線沒有區別)

我得到以下異常:

System.IO.IOException

連接丟失

描述:HTTP 500.Erro處理請求。

詳細信息:非網絡例外。異常來源(應用程序或對象的名稱):Mono.Data.Tds。

異常堆棧跟蹤: 在Mono.Data.Tds.Protocol.TdsComm.GetPhysicalPacketHeader()[0x00000]在:0

在Mono.Data.Tds.Protocol.TdsComm.GetPhysicalPacket()[0x00000]在:0

在Mono.Data.Tds.Protocol.TdsComm.GetByte()[0x00000]在:0

在Mono.Data.Tds.Protocol.Tds.ProcessSubPacket()[0x00000]中: 0

at Mono.Data.Tds.Protocol.Tds.NextResult()[0x00000] in:0

在Mono.Data.Tds.Protocol.Tds.SkipToEnd()[0x00000]在:0

PostgreSQL的日誌顯示以下:

[未知] @ [未知]日誌:無效啓動數據包的長度

任何人都有一個想法,我應該開始尋找問題?

回答

0

解決了它。 原來我省略了asp:SqlDataSource標籤上的ProviderName屬性。

一個適當的asp:SqlDataSource的標籤(4.0)是這樣的:

<asp:SqlDataSource ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:ConnStr2 %>" ProviderName="Npgsql" runat="server" SelectCommand="select * from test"></asp:SqlDataSource> 

相關的Web.config條目:

.... 
<system.data> 
    <DbProviderFactories> 
    <add name="Npgsql Data Provider" 
      invariant="Npgsql" 
      support="FF" 
      description ="Data Provider for PostgreSQL" 
      type="Npgsql.NpgsqlFactory, Npgsql" /> 
    </DbProviderFactories> 
</system.data> 
... 
<connectionStrings> 
    <add name="ConnStr2" connectionString="Server=127.0.0.1;Database=database;User ID=user;Password=password;" providerName="Npgsql"/>