我有一台Debian Jessie(i386)机器,带有mono complete、mono xsp和postgresql-9.5(来自http://apt.postgresql.org/)
我有一个简单的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.IO异常
连接丢失
描述:HTTP 500。处理请求时出错。
详细信息:非web异常。异常源(应用程序或对象的名称):Mono.Data.Tds。
异常堆栈跟踪:
位于:0中的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]处
位于Mono.Data.Tds.Protocol.Tds.NextResult()[0x00000]in:0
在0中的Mono.Data.Tds.Protocol.Tds.SkipToEnd()[0x00000]处
postgresql日志显示如下:
[未知]@[未知]日志:启动数据包的长度无效
有人知道我应该从哪里开始寻找问题吗?
最佳答案
解决了。
原来我省略了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"/>
关于asp.net - 如何使Npgsql连接到Postgresql 9.5,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40821171/