编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

DataReader.GetFieldType(0) 返回了 null。

最近,为客户用Net写了个电子发票下载的平台,在部署到客服服务器的时候报了以下错误:DataReader.GetFieldType(0) 返回了 null。

本地调试是没任何问题的,那么肯定是服务器环境的问题了。

本地调试:win10

服务器环境:windows server 2016

数据库的话,本地和服务器没任何差别,我本地是直接远程连得数据库。

按照网上的一些方法

1、在连接字符串后面指定sql版本号:Type System Version=SQL Server 2012

没有任何作用

2、安装 SQLSysClrTypes.msi

微软官方下载SQLSysClrTypes.msi

地址:https://www.microsoft.com/en-us/download/details.aspx?id=52676

下载:SQLSysClrTypes.msi,下载页有2个文件,都安装了

也还是没用

3、最后没办法,把开发机的Microsoft.SqlServer.Types.dll文件复制到应用目录bin下面,问题就解决了。

当然你本地可能有好多个Microsoft.SqlServer.Types.dll文件,一个个试试吧。我复制的是Microsoft SQL Server\110\SDK\Assemblies目录下的。

最后,贴下具体的错误代码吧

“/”应用程序中的服务器错误。
DataReader.GetFieldType(0) 返回了 null。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
异常详细信息: System.InvalidOperationException: DataReader.GetFieldType(0) 返回了 null。
源错误: 
执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪: 
[InvalidOperationException: DataReader.GetFieldType(0) 返回了 null。]
   System.Data.ProviderBase.SchemaMapping.SetupSchemaWithoutKeyInfo(MissingMappingAction mappingAction, MissingSchemaAction schemaAction, Boolean gettingData, DataColumn parentChapterColumn, Object chapterValue) +2260
   System.Data.ProviderBase.SchemaMapping..ctor(DataAdapter adapter, DataSet dataset, DataTable datatable, DataReaderContainer dataReader, Boolean keyInfo, SchemaType schemaType, String sourceTableName, Boolean gettingData, DataColumn parentChapterColumn, Object parentChapterValue) +617
   System.Data.Common.DataAdapter.FillMappingInternal(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 schemaCount, DataColumn parentChapterColumn, Object parentChapterValue) +157
   System.Data.Common.DataAdapter.FillMapping(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 schemaCount, DataColumn parentChapterColumn, Object parentChapterValue) +122
   System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue) +108
   System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords) +508
   System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +281
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +182
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +129
   CommonWeb.Core.Utility.GenericDataAccess.Execute() in E:\Net\CommonWeb.Core\Utility\GenericDataAccess.cs:156
   CommonWeb.Core.Business.SysDao.login(String userName, String password, String clientInfo) in E:\Net\CommonWeb.Core\Business\SysDao.cs:137
   CommonWeb.MVC.Areas.Admin.Controllers.LoginController.Login(String userName, String password) in E:\Net\CommonWeb.MVC\Areas\Admin\Controllers\LoginController.cs:32
   lambda_method(Closure , ControllerBase , Object[] ) +191
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +35
   System.Web.Mvc.Async.<>c.<BeginInvokeSynchronousActionMethod>b__9_0(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +39
   System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +67
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +42
   System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__11_0() +72
   System.Web.Mvc.Async.<>c__DisplayClass11_1.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2() +386
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +42
   System.Web.Mvc.Async.<>c__DisplayClass3_6.<BeginInvokeAction>b__3() +50
   System.Web.Mvc.Async.<>c__DisplayClass3_1.<BeginInvokeAction>b__5(IAsyncResult asyncResult) +186
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +38
   System.Web.Mvc.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState) +26
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +65
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +53
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +38
   System.Web.Mvc.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState) +41
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +65
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +38
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +399
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +157
版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.6.1586.0


未经允许不得转载: 技术文章 » .NET编程 » DataReader.GetFieldType(0) 返回了 null。