ServiceStack:属性为null时获取FileNotFoundException?

时间:2018-12-10 12:49:24

标签: servicestack

我正在使用ServiceStack,发现了一些奇怪的东西。当WS Dto包含一些SELECT date, SUM( country = 'Belgium' ) AS Belgium, SUM( country = 'Germany' ) AS Germany, SUM( country = 'Italy' ) AS Italy FROM t_stat GROUP BY date 值时,我在FileNotFoundException上得到了System.Numerics.Vectors。例如,我有一个名为“ GetBookingSolutions”的Dto,它看起来像这样:

null

最后两个是字典,因此可以为空。如果发送客户端发送的JSON如下所示:

    [Route(BookingWizard.BASE_PATH + "getbookingsolution", Verbs = "POST", Summary = "Sends booking spec to request server to create/plan the booking")]
public class GetBookingSolution : IReturn<GetBookingSolutionResponse>
{
    public DateTime TimeWanted { get; set; }
    public uint AddressFrom { get; set; }
    // ...
    public Dictionary<uint, int> Equipment { get; set; }
    public Dictionary<uint, int> CoTravellers { get; set; }
}

然后我得到了异常,如下所示。服务实现永远不会执行,因此代码永远不会到达。相反,我在{ "TimeWanted": "2018-12-10T09:05:00.000Z", "AddressFrom": 14427162, "CoTravellers": null, "Equipment": null } 中得到了异常。

如果JSON看起来像这样:

UncaughtExceptionHandlers

或者如果填充了词典:

{
  "TimeWanted": "2018-12-10T09:05:00.000Z",
  "AddressFrom": 14427162,
}

然后不会出现错误。为什么会这样呢?这是一个错误还是建议?如果这些属性不是最终用户设置的,则{ "TimeWanted": "2018-12-10T09:05:00.000Z", "AddressFrom": 14427162, "CoTravellers": { "13486513": 2, "13486515": 1 }, "Equipment": { "13424459": 2, } } 值适用于这些属性。

null

1 个答案:

答案 0 :(得分:0)

这是一个运行时依赖关系问题,与DTO中的null无关,这正是触发代码路径的原因,该代码路径需要无法加载的 System.Numerics.Vectors 依赖关系。在这种情况下,请调用System.MemoryExtensions.Equals()扩展方法。

似乎有一个few issues带有此异常,并且看来this GitHub Thread可以尝试一些解决方法。