ServiceStack 3.9。*至4. * - c#

我正在尝试将服务中的ServiceStack从3.9.43更改为4.0.9。

我必须更改代码中的几项内容,并且大多遵循release notes for this。

对我来说,有些奇怪的事情,例如找不到任何东西来代替ServiceStack.WebHost.Endpoints或AppHostHttpListenerLongRunningBase,但是我可以在之后检查这些事情并能够使我的代码编译。

问题是,当我运行代码时,一开始就会遇到此异常,它会终止服务:

程序集“ ServiceStack,版本= 4.0.9.0,区域性=中性,PublicKeyToken = null”中的类型“ ServiceStack.Host.ServiceController”中的方法“ ExecuteMessage”没有实现。

当碰到底座时,我得到了这个:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ServiceStack;
using ServiceStack.Text;
//using ServiceStack.WebHost.Endpoints;
using ServiceStack.Web;


namespace ThisService {
    public class AppHost : AppHostHttpListenerPoolBase { //AppHostHttpListenerLongRunningBase {
        public AppHost(int wthreadMax)
            : base("This Service " + VcsInfo.ChangesetId, wthreadMax, typeof(ThisService).Assembly) {
        }
 ...

我在我的项目中引用:
ServiceStack(4.0.9.0);
ServiceStack.Client;
ServiceStack.Common;
ServiceStack.Interfaces;
ServiceStack.Text

我确信更改为版本4. *时做错了什么,并且由于尝试删除执行程序中的所有内容而迷失了执行消息。对我应该去哪里有什么建议?

顺便说一下,这是一个简单的服务:get json-> math + stuff-> return json。

我想确定我发现3.9.43版本的错误是否仍在4.0.9版本中发生(找不到与该错误有关的任何特定信息,但我相信其中存在一个修复程序),看看我是否应该重构我的版本代码。

参考方案

在v4.10中更新

现在应该在ServiceStack v4.10中解决此问题,其中所有NuGet软件包都为与当前版本匹配的所有依赖项指定了最低版本。这将迫使NuGet下拉最新的软件包,而不是最旧的匹配软件包。

NuGet似乎具有怪异的行为,它会在安装软件包时引入最低的依赖关系,因此如果您安装最新版本的ServiceStack,例如:

PM> Install-Package ServiceStack -Version 4.0.9

它将引入最低的匹配因数,例如:

<package id="ServiceStack.Client" version="4.0.3" targetFramework="net45" />
<package id="ServiceStack.Common" version="4.0.3" targetFramework="net45" />
<package id="ServiceStack.Interfaces" version="4.0.3" targetFramework="net45" />
<package id="ServiceStack.Text" version="4.0.3" targetFramework="net45" />

这是一个意外的惊喜。不幸的是,ServiceStack假定它始终与具有相同版本的最新依赖项一起工作。

因此,在安装ServiceStack之后,您将需要更新所有软件包,以使其与最新版本保持一致,您可以在NuGet UI的“更新”选项卡中或在NuGet软件包控制台管理器中轻松地通过以下方式进行操作:

PM> Update-Package

手动删除所有程序集重定向

安装以前版本的ServiceStack v4.02(现已删除)会为Web.config中的ServiceStack.Interfaces创建新的程序集重定向,如果存在,还应手动删除它们。这些现在不应该为新项目创建。

ServiceStack.Ormlite for sqlite运行时间非常慢 - c#

我在Windows 7上使用ServerStack.OrmLite 4.0。我用OrmLite创建了一个表,并在Sqlite文件中插入了约100行数据。Db.Select()的时间约为1分钟。当我将数据库更改为mysql时,它会立即返回结果。我还尝试使用其他GUI软件访问sqlite数据库,并尝试执行一些sql语句,它们都工作正常。有人有任何线索吗?用代码更…

Python 3运算符>>打印到文件 - python

我有以下Python代码编写项目的依赖文件。它可以在Python 2.x上正常工作,但是在使用Python 3进行测试时会报告错误。depend = None if not nmake: depend = open(".depend", "a") dependmak = open(".depend.mak&#…

无法解析Json响应 - php

我正在尝试解析一个包含产品类别的JSON文件,然后解析这些类别中的产品,并在div中显示它们。我的问题:虽然我可以获取类别,但我不知道如何索取产品(并将它们显示在类别下)。我的剧本:<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> …

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

在服务栈中使用领先的@字符反序列化JSON - c#

下面的代码片段复制了我在ServiceStack应用程序中遇到的反序列化问题。在运行以下命令时,收货人属性正确填充,但id未填充。 static void Main (string[] args) { string json = "{\"@id\":\"abcd\",\"consignee\…