【问题标题】:Why does ServiceStack OrmLite crash with null exception when I add OrmLite.Firebird?为什么添加 OrmLite.Firebird 时 ServiceStack OrmLite 会崩溃并出现空异常?
【发布时间】:2015-09-11 05:36:56
【问题描述】:

我正在评估 ServiceStack 和 OrmLite,并想尝试使用 Firebird 数据库。使用 ServiceStack.Northwind 演示作为起点,当我将 ServiceStack.OrmLite.Firebird 引用添加到 C# 程序集引用时,应用程序在启动时开始崩溃,并在程序集加载时出现空错误:

它发生在 Global.asax.cs 中的代码行:

 public class AppHost : AppHostBase
    {
        public AppHost() : base("Northwind Web Services", typeof(CustomersService).Assembly) {}   // <-- Here!

例外:

System.TypeLoadException was unhandled by user code
  HResult=-2146233054
  Message=Method 'Execute' in type 'ServiceStack.Host.ServiceController' from assembly 'ServiceStack, Version=4.0.11.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.
  Source=ServiceStack
  TypeName=ServiceStack.Host.ServiceController
  StackTrace:
       at ServiceStack.ServiceStackHost..ctor(String serviceName, Assembly[] assembliesWithServices)
       at ServiceStack.AppHostBase..ctor(String serviceName, Assembly[] assembliesWithServices)
       at ServiceStack.Northwind.AppHost..ctor() in C:\dev\ServiceStack.Examples\src\ServiceStack.Northwind\ServiceStack.Northwind\Global.asax.cs:line 13
       at ServiceStack.Northwind.Global.Application_Start(Object sender, EventArgs e) in C:\dev\ServiceStack.Examples\src\ServiceStack.Northwind\ServiceStack.Northwind\Global.asax.cs:line 31
  InnerException: 

演示源在这里:https://github.com/ServiceStack/ServiceStack.Examples/tree/master/src/ServiceStack.Northwind (唯一需要更改的是从包管理器控制台运行Install-Package ServiceStack.OrmLite.Firebird。)

这是包管理器控制台会话:

Package Manager Console Host Version 3.1.1.0

Type 'get-help NuGet' to see all available NuGet commands.

PM> Install-Package ServiceStack.OrmLite.Firebird
Attempting to gather dependencies information for package 'ServiceStack.OrmLite.Firebird.4.0.44' with respect to project 'ServiceStack.Northwind', targeting '.NETFramework,Version=v4.0'
Attempting to resolve dependencies for package 'ServiceStack.OrmLite.Firebird.4.0.44' with DependencyBehavior 'Lowest'
Resolving actions to install package 'ServiceStack.OrmLite.Firebird.4.0.44'
Resolved actions to install package 'ServiceStack.OrmLite.Firebird.4.0.44'
Removed package 'ServiceStack.Common.4.0.11' from 'packages.config'
Successfully uninstalled 'ServiceStack.Common.4.0.11' from ServiceStack.Northwind
Removed package 'ServiceStack.Interfaces.4.0.11' from 'packages.config'
Successfully uninstalled 'ServiceStack.Interfaces.4.0.11' from ServiceStack.Northwind
Removed package 'ServiceStack.OrmLite.4.0.11' from 'packages.config'
Successfully uninstalled 'ServiceStack.OrmLite.4.0.11' from ServiceStack.Northwind
Removed package 'ServiceStack.Text.4.0.11' from 'packages.config'
Successfully uninstalled 'ServiceStack.Text.4.0.11' from ServiceStack.Northwind
Adding package 'FirebirdSql.Data.FirebirdClient.4.7.0' to folder 'C:\dev\ServiceStack.Examples\src\ServiceStack.Northwind\packages'
Added package 'FirebirdSql.Data.FirebirdClient.4.7.0' to folder 'C:\dev\ServiceStack.Examples\src\ServiceStack.Northwind\packages'
Added package 'FirebirdSql.Data.FirebirdClient.4.7.0' to 'packages.config'
Successfully installed 'FirebirdSql.Data.FirebirdClient 4.7.0' to ServiceStack.Northwind
Adding package 'ServiceStack.Interfaces.4.0.44' to folder 'C:\dev\ServiceStack.Examples\src\ServiceStack.Northwind\packages'
Added package 'ServiceStack.Interfaces.4.0.44' to folder 'C:\dev\ServiceStack.Examples\src\ServiceStack.Northwind\packages'
Added package 'ServiceStack.Interfaces.4.0.44' to 'packages.config'
Successfully installed 'ServiceStack.Interfaces 4.0.44' to ServiceStack.Northwind
Adding package 'ServiceStack.Text.4.0.44' to folder 'C:\dev\ServiceStack.Examples\src\ServiceStack.Northwind\packages'
Added package 'ServiceStack.Text.4.0.44' to folder 'C:\dev\ServiceStack.Examples\src\ServiceStack.Northwind\packages'
Added package 'ServiceStack.Text.4.0.44' to 'packages.config'
Successfully installed 'ServiceStack.Text 4.0.44' to ServiceStack.Northwind
Adding package 'ServiceStack.Common.4.0.44' to folder 'C:\dev\ServiceStack.Examples\src\ServiceStack.Northwind\packages'
Added package 'ServiceStack.Common.4.0.44' to folder 'C:\dev\ServiceStack.Examples\src\ServiceStack.Northwind\packages'
Added package 'ServiceStack.Common.4.0.44' to 'packages.config'
Successfully installed 'ServiceStack.Common 4.0.44' to ServiceStack.Northwind
Adding package 'ServiceStack.OrmLite.4.0.44' to folder 'C:\dev\ServiceStack.Examples\src\ServiceStack.Northwind\packages'
Added package 'ServiceStack.OrmLite.4.0.44' to folder 'C:\dev\ServiceStack.Examples\src\ServiceStack.Northwind\packages'
Added package 'ServiceStack.OrmLite.4.0.44' to 'packages.config'
Successfully installed 'ServiceStack.OrmLite 4.0.44' to ServiceStack.Northwind
Adding package 'ServiceStack.OrmLite.Firebird.4.0.44' to folder 'C:\dev\ServiceStack.Examples\src\ServiceStack.Northwind\packages'
Added package 'ServiceStack.OrmLite.Firebird.4.0.44' to folder 'C:\dev\ServiceStack.Examples\src\ServiceStack.Northwind\packages'
Added package 'ServiceStack.OrmLite.Firebird.4.0.44' to 'packages.config'
Successfully installed 'ServiceStack.OrmLite.Firebird 4.0.44' to ServiceStack.Northwind
PM> 

【问题讨论】:

    标签: c# servicestack visual-studio-2015 firebird


    【解决方案1】:

    您不能混合和匹配不同版本的 ServiceStack 库。此错误表明它仍在尝试加载较旧的 v4.0.11 ServiceStack:

    Message=类型中的方法“执行” 来自程序集“ServiceStack”的“ServiceStack.Host.ServiceController”, Version=4.0.11.0, Culture=neutral, PublicKeyToken=null' 没有 一个实现。

    我建议改为克隆 ServiceStackApps/Northwind 存储库,该存储库仅包含一个独立副本 Northwind 项目,原样部署在 northwind.servicestack.net Live Demo 网站上,并且已经引用了最新的稳定 v4.0.44 库,这将使更容易修改,没有任何 NuGet 包升级问题。

    【讨论】:

    • 我使用Update-Package -Reinstall ServiceStack.Interfaces 来消除我的演示解决方案中每个子程序集对 4.0.11 的持久引用,这具有很好的修改效果.csproj和packages.config,并巧妙地修复了版本冲突。顺便说一句,ServiceStack 真的很棒。
    猜你喜欢
    • 1970-01-01
    • 2013-01-19
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    相关资源
    最近更新 更多