【发布时间】:2015-06-16 09:07:06
【问题描述】:
不确定该主题是否是此问题的最佳描述,但我遇到了一个不寻常的问题,我有一个 Web API 操作和一个请求字段,并且出于某种奇怪的原因,该值被操纵。根据输入,它会被 Web API 甚至是 JSON.NET 等其他东西转换/翻译?
应该提到这是一个全新的项目,除了在 Visual Studio 中创建新的 Web API 项目时默认添加的内容之外没有其他引用。
public class TestController : ApiController
{
public void Post(Foo request)
{
}
}
public class Foo
{
public string Blah { get; set; }
}
使用休息客户端,我使用以下请求进行操作:
{
"Blah": 43443333222211111117
}
在调试时,Blah 的值被转换为"6549845074792007885"。我不明白它是如何以及为什么这样做的?它尊重的任何其他价值。例如:
{
"Blah": 53443333222211111117
}
这绝对没问题,但数字更大。
谢谢,DS。
【问题讨论】:
-
你真的可以有一个返回 void 的 api 方法吗?我见过他们通常返回 IHttpResult 或 HttpResponseMessage?否则消费者怎么知道请求是否确实成功?
-
默认情况下不会返回任何内容。我的方法也有 http post 属性。
-
您是否尝试在请求标头中设置正确的内容类型?
-
是的,两个标头都设置为 json。内容类型和另一种我不记得了。
-
尝试在方法签名中在 Foo 前面附加 frombody 并在发布请求时将内容类型设置为 urlencoded,看看这是否会产生差异
标签: c# post asp.net-web-api json.net