2016-11-26 8 views
0

У меня есть Debian Jessie (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 r запрос обработки.

Подробнее: исключение для не веб-сайтов. Исходное происхождение (имя приложения или объекта): 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

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

на Mono.Data.Tds.Protocol.Tds.SkipToEnd() [0x00000] в: 0

В журнале PostgreSQL показывает следующее:

[неизвестен] @ [неизвестен] LOG: неверная длина стартового пакета

У кого-нибудь есть идея, где я должен искать проблемы?

ответ

0

Решено. Оказывается, я пропустил атрибут ProviderName в теге asp: SqlDataSource.

Надлежащий жерех: 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"/>