C# 访问第三方dll时调用目标引发的异常

C# 访问第三方dll时调用目标引发的异常,c#,.net-3.5,console-application,nullreferenceexception,dll-reference,C#,.net 3.5,Console Application,Nullreferenceexception,Dll Reference,我一直在开发一个C#console应用程序,它使用项目中引用的许多第三方DLL 一切正常,但有一天我的windows 7操作系统因为自动windows更新而更新,此后,该应用程序代码开始在调用实际访问数据库的第三方dll的代码处崩溃 我将系统恢复到以前的状态,应用程序再次正常工作,但windows update再次运行,应用程序再次在同一位置崩溃 我不能停止windows update,因为它是公司提供的笔记本电脑,我不能更改设置,以使windows update不再发生。我没有这个第三方dll

我一直在开发一个C#console应用程序,它使用项目中引用的许多第三方DLL

一切正常,但有一天我的windows 7操作系统因为自动windows更新而更新,此后,该应用程序代码开始在调用实际访问数据库的第三方dll的代码处崩溃

我将系统恢复到以前的状态,应用程序再次正常工作,但windows update再次运行,应用程序再次在同一位置崩溃

我不能停止windows update,因为它是公司提供的笔记本电脑,我不能更改设置,以使windows update不再发生。我没有这个第三方dll的代码

我可以在这里为您提供app.config

                <?xml version="1.0" encoding="utf-8"?>
            <configuration>
              <configSections>
                <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
                <section name="databaseSection" type="Cognizant.CAFE.FoundationServices.Data.Configuration.DatabaseSection,Cognizant.CAFE.FoundationServices.Data"/>
                <section name="cafe.frameworks.foundationAbstraction" type="Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.Configuration.FoundationAbstractionSectionHandler, Cognizant.CAFE.Frameworks.FoundationAbstraction.AdapterFactory"/>
                <section name="loggingConfiguration" type="Cognizant.CAFE.FoundationServices.Logging.Configuration.LoggingConfigurationSection, Cognizant.CAFE.FoundationServices.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
                <section name="exceptionManagement" type="Cognizant.CAFE.FoundationServices.ExceptionManagement.Configuration.ExceptionManagementSection, Cognizant.CAFE.FoundationServices.ExceptionManagement, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>

              </configSections>

              <!--<databaseSection performanceCountersEnabled="false" />
              <exceptionManagement performanceCountersEnabled="false" />-->

              <databaseSection defaultDatabase="Sql" dbCommandTimeOut="3000">
                <databases>
                  <add name="Sql" type="Cognizant.CAFE.FoundationServices.Data.SqlHelper,Cognizant.CAFE.FoundationServices.Data" connectionStringName="Sql"/>
                </databases>
              </databaseSection>


              <log4net>
                <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
                  <file value="C:\ApplicationLogs\BGTs\AA\v1.0\AABackgroundTask\Files\Log\AABLog.txt"/>
                  <appendToFile value="true"/>
                  <maximumFileSize value="1500KB"/>
                  <maxSizeRollBackups value="20"/>
                  <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%d [%t] %-5p %c - %m%n"/>
                  </layout>
                </appender>
                <root>
                  <level value="DEBUG"/>
                  <appender-ref ref="RollingFile"/>
                </root>
              </log4net>


              <connectionStrings>
                     -----deleted
              </connectionStrings>

              <appSettings>
                <!--Production-->
                <!-- PROCESS DELAY SECTION -->
                <add key="ProcessDelay" value="0"/>

                <!-- INBOUND -->
                <add key="IB_GlobalVarCreation" value="GlobalVarCreation"/>
                <add key="IB_RoutingScript_In" value="RoutingScript_In"/>

                <!-- OUTBOUND -->
                <add key="OB_CampaignCreation" value="CampaignCreation"/>
                <add key="OB_RoutingScript_Out" value="RoutingScript_Out"/>
                <add key="OB_AdminScript_Agent" value="AdminScript_Agent"/>
                <add key="OB_DisableCampaign" value=" DisableCampaign"/>

                <!-- INBOUND & OUTBOUND -->
                <add key="IB_OB_EnterpriseSkillGroup" value="EnterpriseSkillGroup"/>
                <add key="IB_OB_SkillGroupCreation" value="SkillGroupCreation"/>
                <add key="IB_OB_EnterpriseSkillGroupMap" value="EnterpriseSkillGroupMap"/>
                <add key="IB_OB_CallType" value="CallType"/>
                <add key="IB_OB_DialNumberMapping" value="DialNumberMapping"/>

                <!--NORAML OPERATIONS-->
                <add key="OPS_UserCreation" value="UserCreation"/>
                <add key="OPS_AgentSupervisor" value="AgentSupervisor"/>
                <add key="OPS_Rehire" value="Rehire"/>

                <add key="OPS_AgentTeamCreation" value="AgentTeamCreation"/>

                <add key="OPS_AgentSkillGroup" value="AgentSkillGroup"/>

                <add key="OPS_AgentTeam" value="AgentTeam"/>
                <add key="OPS_SupervisorTeam" value="SupervisorTeam"/>
                <add key="OPS_AgentTeamUpdate" value="AgentTeamUpdate"/>

                <!--Active Directory INFORMATION -->
                <add key="adURL" value="IQOR.QOR.COM"/>
                <add key="adUser" value="IQOR\ERP.IQ.QATCH"/>
                <add key="adPassword" value="+loS96bB8jNKv1JWXVLb0w=="/>

                <!--Others-->
                <add key="OTH_TeamUpdateEnable" value="true"/>
                <add key="OTH_ProgarmPoolIndEnable" value="false"/>

              </appSettings>

              <cafe.frameworks.foundationAbstraction>
                <authorization>
                  <adapters>
                    <add name="CafeProvider" type="Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.CAFE.AuthorizationAdapter, Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.CAFE, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" default="True"/>
                    <add name="EnterpriseLibraryProvider" type="Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.EnterpriseLibrary.AuthorizationAdapter, Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.EnterpriseLibrary, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
                  </adapters>
                </authorization>
                <caching>
                  <adapters>
                    <add name="EnterpriseLibraryProvider" type="Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.EnterpriseLibrary.CacheAdapter, Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.EnterpriseLibrary, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" default="True"/>
                  </adapters>
                </caching>
                <dataAccess>
                  <adapters>
                    <add name="CafeProvider" type="Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.CAFE.DataAccessAdapter, Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.CAFE, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" default="True"/>
                  </adapters>
                </dataAccess>
                <exceptionManagement>
                  <adapters>
                    <add name="CafeProvider" type="Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.CAFE.ExceptionManagerAdapter, Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.CAFE, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" default="True"/>
                    <add name="EnterpriseLibraryProvider" type="Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.EnterpriseLibrary.ExceptionManagerAdapter, Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.EnterpriseLibrary, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
                  </adapters>
                </exceptionManagement>
                <logging>
                  <adapters>
                    <add name="CafeProvider" type="Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.CAFE.LoggingAdapter, Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.CAFE, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" default="True"/>
                    <add name="EnterpriseLibraryProvider" type="Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.EnterpriseLibrary.LoggingAdapter, Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.EnterpriseLibrary, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
                  </adapters>
                </logging>
              </cafe.frameworks.foundationAbstraction>


              <loggingConfiguration>
                <commonSettings loggingEnabled="true" logToTrace="true" useAdditionalParameters="true">
                  <loggingMode asynchronous="False"/>
                  <filters>
                    <allowedLogLevels>
                      <add name="Error"/>
                      <add name="Fatal"/>
                      <add name="Information"/>
                      <add name="Trace"/>
                      <add name="Warning"/>
                    </allowedLogLevels>
                    <allowedLogCategories>
                      <add name="Category"/>
                    </allowedLogCategories>
                  </filters>
                  <publishers>
                    <add name="DBLog" type="Cognizant.CAFE.FoundationServices.Logging.DBPublisher, Cognizant.CAFE.FoundationServices.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
                    <add name="EventLog" type="Cognizant.CAFE.FoundationServices.Logging.EventLogPublisher, Cognizant.CAFE.FoundationServices.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
                    <add name="MSMQLog" type="Cognizant.CAFE.FoundationServices.Logging.MSMQPublisher, Cognizant.CAFE.FoundationServices.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
                    <add name="TextLog" type="Cognizant.CAFE.FoundationServices.Logging.TextFilePublisher, Cognizant.CAFE.FoundationServices.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
                    <add name="XMLLog" type="Cognizant.CAFE.FoundationServices.Logging.XMLFilePublisher, Cognizant.CAFE.FoundationServices.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
                  </publishers>
                  <formatters defaultFormatter="Text">
                    <add name="Text" type="Cognizant.CAFE.FoundationServices.Logging.TextFormatter, Cognizant.CAFE.FoundationServices.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
                    <add name="Xml" type="Cognizant.CAFE.FoundationServices.Logging.XMLFormatter, Cognizant.CAFE.FoundationServices.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
                  </formatters>
                </commonSettings>
                <logSettings defaultCategory="Category">
                  <categories>
                    <add categoryName="Category">
                      <categorySettings>
                        <add levelName="Error">
                          <sinks>
                            <add publisherName="TextLog" formatterName="Text" fileName="AABLog.txt" maxFileSize="1MB"/>
                          </sinks>
                        </add>
                      </categorySettings>
                    </add>
                  </categories>
                </logSettings>
              </loggingConfiguration>


              <exceptionManagement>
                <policies defaultPolicy="UI Policy">
                  <add name="UI Policy" type="">
                    <exceptions>
                      <add name="Exception" type="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" postHandlingAction="None">
                        <handlers>
                          <add name="Log Handler" type="Cognizant.CAFE.FoundationServices.ExceptionManagement.LogHandler, Cognizant.CAFE.FoundationServices.ExceptionManagement, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
                        </handlers>
                      </add>
                    </exceptions>
                  </add>
                </policies>
                <messageSources defaultSource="Xml">
                  <add name="Xml" type="Cognizant.CAFE.FoundationServices.ExceptionManagement.XmlMessageSource, Cognizant.CAFE.FoundationServices.ExceptionManagement, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" source="D:\Cognizant\CAFE.NET 2.0\Foundation Services\QuickStart\Web\ExceptionMessages.xml"/>
                </messageSources>
              </exceptionManagement>


              <system.web>
                <membership defaultProvider="ClientAuthenticationMembershipProvider">
                  <providers>
                    <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri=""/>
                  </providers>
                </membership>
                <roleManager defaultProvider="ClientRoleProvider" enabled="true">
                  <providers>
                    <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400"/>
                  </providers>
                </roleManager>
              </system.web>
            <startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
下面这一行是我得到异常的地方,因为这个方法是在我没有任何代码的第三方dll中编写的

ds = DataAccessFaçadeAdapter.ExecuteStatementForDataSet(statementId, param);
例外情况详情如下:

-       InnerException  {"Object reference not set to an instance of an object."}   System.Exception {System.NullReferenceException}

        Message "Object reference not set to an instance of an object." string
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at Cognizant.CAFE.Frameworks.FoundationAbstraction.AdapterFactory.GetAdapter[T]()
at IQOR.QATCH.IntegrationServices.DataAccessFaçadeAdapter.ExecuteStatementForDataSet(String StatementID, Object[] parameters)
at IQOR.AA.BackgroundTask.Exporter.GetData(String statementId, String parameter) in C:\\AutomationAnywhere_OLD_CODE\\AutomationAnywhere_OLD\\IQOR.AA.BackgroundTask - Copy\\IQOR.AA.BackgroundTask\\Exporter.cs:line 433
at Cognizant.CAFE.FoundationServices.Data.AdoHelperFactory.GetConnectionString(String providerName)
at Cognizant.CAFE.FoundationServices.Data.AdoHelperFactory.CreateHelper(String providerName)
at Cognizant.CAFE.FoundationServices.Data.AdoHelperFactory.CreateHelper()
at Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.CAFE.DataAccessAdapter..ctor()
堆栈跟踪如下所示:

-       InnerException  {"Object reference not set to an instance of an object."}   System.Exception {System.NullReferenceException}

        Message "Object reference not set to an instance of an object." string
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at Cognizant.CAFE.Frameworks.FoundationAbstraction.AdapterFactory.GetAdapter[T]()
at IQOR.QATCH.IntegrationServices.DataAccessFaçadeAdapter.ExecuteStatementForDataSet(String StatementID, Object[] parameters)
at IQOR.AA.BackgroundTask.Exporter.GetData(String statementId, String parameter) in C:\\AutomationAnywhere_OLD_CODE\\AutomationAnywhere_OLD\\IQOR.AA.BackgroundTask - Copy\\IQOR.AA.BackgroundTask\\Exporter.cs:line 433
at Cognizant.CAFE.FoundationServices.Data.AdoHelperFactory.GetConnectionString(String providerName)
at Cognizant.CAFE.FoundationServices.Data.AdoHelperFactory.CreateHelper(String providerName)
at Cognizant.CAFE.FoundationServices.Data.AdoHelperFactory.CreateHelper()
at Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.CAFE.DataAccessAdapter..ctor()
第三方dll的堆栈跟踪如下:

-       InnerException  {"Object reference not set to an instance of an object."}   System.Exception {System.NullReferenceException}

        Message "Object reference not set to an instance of an object." string
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at Cognizant.CAFE.Frameworks.FoundationAbstraction.AdapterFactory.GetAdapter[T]()
at IQOR.QATCH.IntegrationServices.DataAccessFaçadeAdapter.ExecuteStatementForDataSet(String StatementID, Object[] parameters)
at IQOR.AA.BackgroundTask.Exporter.GetData(String statementId, String parameter) in C:\\AutomationAnywhere_OLD_CODE\\AutomationAnywhere_OLD\\IQOR.AA.BackgroundTask - Copy\\IQOR.AA.BackgroundTask\\Exporter.cs:line 433
at Cognizant.CAFE.FoundationServices.Data.AdoHelperFactory.GetConnectionString(String providerName)
at Cognizant.CAFE.FoundationServices.Data.AdoHelperFactory.CreateHelper(String providerName)
at Cognizant.CAFE.FoundationServices.Data.AdoHelperFactory.CreateHelper()
at Cognizant.CAFE.Frameworks.FoundationAbstraction.Adapters.CAFE.DataAccessAdapter..ctor()

请建议如何解决。

确定第三方DLL是否有更新。通常系统会更新目标发现的安全漏洞,此目标dll可能存在一些相关问题


否则,您可能希望实现不同的数据访问方法,甚至将应用程序移动到.Net 4,该应用程序可能具有最新的方法。

您的目标是.Net的哪个版本?我的目标是.Net 3.5版。我还添加了一个显示异常详细信息的图像。也许这对理解我所面临的问题有些帮助。嗨,亲爱的,我想你是对的,这可能是因为一些安全漏洞,在windows update期间安装了很多安全补丁。但我们无法获得此第三方dll的更新版本。我已将目标框架更改为.NET 4、4.5和4.6,但问题仍然存在。我也无法更改数据访问代码,因为此项目中有多个第三方DLL。我在datasets和datareader中使用SimpleADO.NET创建了一个简单的应用程序,并从同一个数据库访问数据,一切都很好。如果第三方dll无法更新,请在这里帮助我了解更多…@ParasChaudhary;您唯一的做法是替换使用它的代码,并构建一个没有它的新应用程序。