将json整数反序列化为long会导致异常和空值,似乎是随机的

时间:2019-01-29 07:23:04

标签: json servicestack

我遇到了最奇怪的问题:

在某些(许多)情况下,突然解析包含long的DTO失败,具体取决于long的值。让我们看看发生了什么。我正在使用ServiceStack和Visual Studio 2017,.NET Framework 4.7.2。

服务

[Tag("Notifications")]
[Route(Misc.BASE_PATH, "PUT")]
public class SetActorNotificationsRead : IReturn<SetActorNotificationsReadResponse>
{
    public List<string> NotificationIds { get; set; }
    public List<string> Test { get; set; }
    public long MyLong { get; set; }
}

我通过邮递员称呼它,像这样:

enter image description here

在这种情况下,它可以按预期工作,DTO已正确填充:

enter image description here

如果将MyLong更改为123 4 ,它将失败并显示

  

无法加载文件或程序集'System.Numerics.Vectors

enter image description here

但是如果我将其更改为123 45 ,它将再次起作用:

enter image description here

更糟糕的是,如果我将NotificationIds更改为List<long>,它将变得更加奇怪:

此Postman呼叫失败,因为NotificationIds列表为空:

enter image description here

enter image description here

但是如果我更改了请求,并在四个9:s前面添加了零,那么它将起作用:

enter image description here

enter image description here

如果我执行[ 9999, 123 ],则NotificationIds仍为null,但是如果我执行[ 09999, 123 ][ 99991, 123 ],则它不为null,并且两个值都在列表中。 / p>

我一无所知。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

由于运行时相关性问题,导致无法在系统中加载“ System.Numerics.Vectors”程序集。

您可以尝试adding a manual reference to System.Numerics.Vectors

来自软件包:https://www.nuget.org/packages/System.Numerics.Vectors