c#内部异常,无法加载类型

时间:2013-08-30 03:45:35

标签: c# .net visual-studio-2012

我有一个处理推送通知的网络服务,在重建之后,它现在在我启动时崩溃了。在日志中,这是堆栈跟踪,我得到以下内容:

Stack Trace at JDS.Booj.Mobile.MySqlStorageProvider.Providers.BoojMobileStorage.<>c__DisplayClasse6.<FindOrCreateEnvironment>b__e4(MySqlConnection connection) in d:\TeamCityWork\a1d7899dc094839e\MySqlStorageProvider\Providers\BoojMobileStorage.cs:line 125
   at JDS.Booj.Mobile.MySqlCommon.MySqlDatabaseUtils.RunInConnection(String connectionString, CodeToRunInConnection code) in d:\TeamCityWork\a1d7899dc094839e\MySqlCommon\MySqlDatabaseUtils.cs:line 334
   at JDS.Booj.Mobile.MySqlStorageProvider.Providers.BoojMobileStorage.FindOrCreateEnvironment(BoojMobileEnvironment environment) in d:\TeamCityWork\a1d7899dc094839e\MySqlStorageProvider\Providers\BoojMobileStorage.cs:line 139
   at JDS.Booj.Mobile.Library.Environments.EnvironmentOperations.CreateCurrentEnvironmentIfNotExists() in c:\Users\connl1\Documents\bitbucket\booj-mobile-server\Library\Environments\EnvironmentOperations.cs:line 113
   at JDS.Booj.Mobile.Library.MobileDatabaseHelper.InitializeDatabase() in c:\Users\connl1\Documents\bitbucket\booj-mobile-server\Library\BoojMobileDatabaseHelper.cs:line 41
   at JDS.Booj.Mobile.Library.BoojMobileStartup.MobileInitialize() in c:\Users\connl1\Documents\bitbucket\booj-mobile-server\Library\BoojMobileStartup.cs:line 117
   at JDS.Booj.Mobile.Library.BoojMobileStartup.DoInitialization() in c:\Users\connl1\Documents\bitbucket\booj-mobile-server\Library\BoojMobileStartup.cs:line 96
   at JDS.Booj.Mobile.Library.BoojMobileStartup.Initialize() in c:\Users\connl1\Documents\bitbucket\booj-mobile-server\Library\BoojMobileStartup.cs:line 70
Inner Exception: Could not load type 'JDS.Booj.Mobile.Common.SqlBuilder.SqlBuilder`1' from assembly 'JDS.Booj.Mobile.Common, Version=4.1.0.0, Culture=neutral, PublicKeyToken=null'.
Source: JDS.Booj.Mobile.MySqlStorageProvider
Stack Trace:    at JDS.Booj.Mobile.MySqlStorageProvider.DataMappers.BoojMobileMappers.BoojMobileEnvironmentMapper..cctor()

据我所知,它试图在错误的目录中调用某些方法(即d:\ teamcitywork下的任何内容),但此目录不存在。

在解决方案资源管理器中,路径设置为正确的文件,所以我很茫然。

有谁知道如何将其指向正确的文件或解决问题?

1 个答案:

答案 0 :(得分:1)

您正在看到d:\teamcitywork路径,因为PDB已部署,这意味着有人建立在调试模式下并部署(更有可能)或无意中将其复制到服务器(不太可能)。

对于Could not load type错误消息,您是否可以验证是否已将JDS.Booj.Mobile.Common DLL的正确版本部署到服务器?我的猜测是它丢失或服务器上的版本错误,导致发生此错误。

更新:

common.dll是您拥有源代码的文件吗?听起来JDS.Booj.Mobile.Common.SqlBuilder命名空间不在DLL的已部署版本中,或者以某种方式更改它使其无法加载。

您有Reflector还是ILSpy?这些工具将允许反编译DLL并查看它们内部的逻辑。然后,您可以将已部署代码中的SqlBuilder类型与计算机上的内容进行比较。