我最初使用原始版本的IBM.Data.Informix.Dll(2.81)为ASP.NET应用程序开发了ASP.NET 2.0替代品。替换在大多数情况下工作正常,但在连接到数据库时间歇性地挂起(这是原始问题。)我决定升级到最新版本的dll(3.70),但删除旧版本并更换使用new,然后添加引用,我现在每当构建应用程序时都会收到“Object reference not set”错误。
错误未指定行或提供任何有用信息。如果我在构建之前打开其中一个.aspx页面,我也会收到文件本身的警告。
以下是整个错误:
: Build (web): Object reference not set to an instance of an object.
警告,特别是一页:
Warning 2 \\io\wwwroot\intranet\cwsheet-test2\Selection.aspx: ASP.NET runtime error: Object reference not set to an instance of an object. \\io\wwwroot\intranet\cwsheet-test2\Selection.aspx 1 1 cwsheet-test2
此外,当aspx文件打开时,顶部会加下划线:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Selection.aspx.cs" Inherits="XXX.Selection" %>
同样,这只适用于较新版本的dll。 dll是我系统的正确版本(取自64位SDK)。如果我删除这个dll然后用旧的替换它,它会再次开始正常工作。
只是为了解释为什么我没有使用IBM.Data.Db2:我们拥有的Informix服务器是10.0,而DB2仅适用于11.10及更高版本。
关于Satyan的问题:网站中的GAC参考设置为3.0.0.2;我去添加引用时DLL的版本号是3.00.05000.2。如果这可能是问题,我该如何纠正?
答案 0 :(得分:1)
很可能其中一个可能就是这个问题的原因。
GAC上的提供程序DLL可能不正确。
或者machine.config
可能包含错误的版本信息。
它很可能位于(但取决于您的设置)
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config
。
正确的CSDK安装应该更新两个条目。 您是否尝试通过简单的副本替换提供程序DLL,如果是这样,它将无法正常工作。 仅供参考:您提到的“间歇性挂起”是不同的东西;不知道为什么。
答案 1 :(得分:0)
事实证明,驱动程序版本的问题很奇怪。在厌倦了尝试使64位版本工作(这是在Server 2008 R2 64bit,所以这是正确的版本)后,我尝试卸载它并使用32位版本(这是2.90版本。)它工作。完美。不知道为什么64位即使在添加到空白项目时也会立即引起问题。虽然我宁愿使用那个版本而不是32bit,但是花了几天时间试图找到一个解决方案,我只想使用32位,因为它确实有用。