小编Mo *_*o D的帖子

WebAPI,JSON.Net和丢失小数精度

我使用WebAPI和JSON.Net遇到了一个奇怪的问题.当反序列化已提交给我的API的JSON时,我似乎正在失去精确度!我将小数提交到3位小数,但当值在我的对象中实现时,它只有2位小数!

我提交的JSON看起来像这样:

{
    id: 1,
    name: 'mock data',
    value: 123.456
}
Run Code Online (Sandbox Code Playgroud)

这绑定到一个看起来像这样的类:

public class MockObject {
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

为了完整性,这基本上就是我的WebAPI方法:

public HttpResponseMessage Post (MockObject data) {
    // do something with the value here and return the relevant response
}
Run Code Online (Sandbox Code Playgroud)

我通过JQuery ajax请求提交数据,但我可以看到发布的值与我在提交之前检查chrome dev工具中的值时的预期完全一致,并且一旦它们"通过网络"消失,就会在fiddler中查看.

当它在Post方法中对物化对象做某事时,"值"的值为123.45.

如果我提交2个或更少的小数位(即123.4或123.45),则该值按预期反序列化,但是如果我提交超过2个小数位(即123.456或123.4567等,则该值总是被反序列化为123.45.

其他人遇到过这个问题?有什么建议?

c# json.net asp.net-web-api

12
推荐指数
1
解决办法
8235
查看次数

检查服务是否已挂起的最佳方法

我有一个问题,如何最好地检查服务是否仍在运行.

首先澄清一下.我的服务是一个C#应用程序,可以从命令行运行,也可以作为Windows服务运行.该服务的功能是检查对远程第三方数据源的更改,并在将这些更改添加到我们自己的本地数据存储之前处理这些更改.

我希望能够确定服务何时因任何原因停止运行,并尽可能自动地通知某人.无论服务是作为Windows服务运行还是从命令行运行,都需要进行此操作.

我已经考虑过监视本地数据存储的更改并通知在一段时间内没有发生更改,但事实证明这有点太不一致,因为第三方数据源的更改频率是可变的,这意味着长期缺乏变化并不一定表明服务已停止工作,可能只是没有变化!

关于我如何监控这个问题有什么建议吗?任何人都有类似的经验吗?

谢谢,M

编辑1 只是为了大致了解服务的工作原理:当新的/更新的数据可用时,第三方服务会引发事件,因此我的服务就会等待引发这些事件并处理引发事件中返回的数据.因此,这就是为什么识别"没有变化"而不是"服务崩溃"的原因很棘手.

编辑2 我认为我需要更清楚一点:这种监控的主要原因是通知用户有关服务或与第三方服务的连接的潜在问题.服务本身是单线程的,具有适当的异常处理和日志记录.有可能这项服务将在某个服务器上运行,所以如果服务有任何问题,它会因为服务需要通知某人的原因而停止更新我们的本地数据存储.

c# service monitoring

5
推荐指数
1
解决办法
4414
查看次数

标签 统计

c# ×2

asp.net-web-api ×1

json.net ×1

monitoring ×1

service ×1