-1

我一直在研究一个C#控制台应用程序,它使用了许多在项目中引用的第三方dll。异常在访问第三方DLL时被调用的目标抛出

一切工作正常,但有一天我的Windows 7操作系统更新,因为自动更新窗口,之后,此应用程序代码开始崩溃的代码,其中调用的第三方DLL实际访问数据库的代码。

我将系统恢复到之前的状态,应用程序再次正常工作,但再次运行Windows更新并且应用程序再次在相同位置崩溃。

我无法停止Windows更新,因为它的公司提供的笔记本电脑,我无法更改设置,以便Windows更新不会再发生。而我没有这个第三方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> 

在我的应用程序崩溃或使异常的代码如下:

public DataSet GetData(string statementId, string parameter) 
    { 
     object[] param = null; 
     DataSet ds = null; 
     try 
     { 
      if (parameter != null) 
      { 
       param = new object[1]; 
       param[0] = parameter; 
       ds = DataAccessFaçadeAdapter.ExecuteStatementForDataSet(statementId, param); 
      } 
      else 
      { 
       ds = ExecuteStoredProcedure(statementId); 
      } 
     } 
     catch (Exception ex) 
     { 
      Tracer.Trace(TraceLevel.Error, "GetData() Exception is" + ex.Message); 
     } 
     return ds; 
    } 

这里的下面一行是我得到的例外,因为这种方法是写在第三方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 
第三方的

堆栈跟踪DLL是如下:

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() 

请就如何建议解决。

+0

你定位的是什么版本的.Net? – OmegaMan

+0

我的目标。净版本3.5 –

+0

我还添加了一个图像,显示异常的细节。也许这可能有助于理解我所面临的问题。 –

回答

0

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

否则,您可能想要实现一种不同的数据访问方法,或者甚至将应用程序移动到可能具有最新方法的.Net 4。

+0

嗨亲爱的,我想你是对的,这可能是因为一些安全漏洞,并在Windows更新安装补丁很多。但我们不能拥有此第三方DLL的更新版本。我已将目标框架更改为.NET 4,4.5和4.6,但问题仍然相同。 –

+0

我也无法更改数据访问代码,因为此项目中有多个第三方dll。我创建了一个简单的应用程序,并在数据集和数据读取器中使用简单的ADO.NET访问相同数据库中的数据,并且everthing工作正常。你能帮我在这里更多的这... –

+0

@ParasChaudhary如果第三方DLL不能更新;你唯一的行为就是替换使用它的代码并在没有它的情况下构建一个新的应用程序。 – OmegaMan

相关问题