我遇到了最奇怪的问题:
在某些(许多)情况下,突然解析包含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; }
}
我通过邮递员称呼它,像这样:
在这种情况下,它可以按预期工作,DTO已正确填充:
如果将MyLong更改为123 4 ,它将失败并显示
无法加载文件或程序集'System.Numerics.Vectors
但是如果我将其更改为123 45 ,它将再次起作用:
更糟糕的是,如果我将NotificationIds更改为List<long>
,它将变得更加奇怪:
此Postman呼叫失败,因为NotificationIds列表为空:
但是如果我更改了请求,并在四个9:s前面添加了零,那么它将起作用:
如果我执行[ 9999, 123 ]
,则NotificationIds
仍为null,但是如果我执行[ 09999, 123 ]
或[ 99991, 123 ]
,则它不为null,并且两个值都在列表中。 / p>
我一无所知。有什么想法吗?
答案 0 :(得分:3)
由于运行时相关性问题,导致无法在系统中加载“ System.Numerics.Vectors”程序集。
您可以尝试adding a manual reference to System.Numerics.Vectors。
来自软件包:https://www.nuget.org/packages/System.Numerics.Vectors