【发布时间】:2012-08-09 04:17:10
【问题描述】:
为什么 .Net WebApi 不自动检测请求 contentType 并进行自动绑定?
如果我在未通知 contentType 的情况下发出请求,则会发生 HTTP 500 错误:
No MediaTypeFormatter is available to read an object of type 'ExampleObject' from content with media type ''undefined''.
为什么不尝试检测传入的数据并自动绑定?
另一种情况:
这个请求用Content-Type: application/x-www-form-urlencoded发送一个JSON:
User-Agent: Fiddler
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Host: localhost:10329
Content-Length: 42
Request Body:
{"Name":"qq","Email":"ww","Message":"ee"}:
我的 Action 不会在对象参数中自动检测 JSON 请求数据:
public void Create(ExampleObject example) //example is null
{
{
他们为什么不尝试解决它而不是让对象为空?
然后,为了发生绑定,我需要使用Content-Type: application/json 发送。
.Net WebAPI 最好能检测到请求数据的类型并进行自动绑定?为什么不这样呢?
【问题讨论】:
-
您将内容类型指定为表单,并且希望 asp.net 覆盖它?对我来说,这似乎是一个非常糟糕的设计决定。
-
@SergRogovtsev 而不是让对象为空,为什么他们不尝试解决它?当我没有指定 ContentType 时?
-
因为这会违反发送者的意图,发送者专门设置数据格式。
-
@SergRogovtsev 但发件人的意图是无论格式如何都发布数据,不是吗?数据格式到头来无所谓,数据要贴出来,这就是本意。
-
数据格式确实很重要。如果没有,你不应该一开始就指定它。
标签: asp.net asp.net-mvc http rest asp.net-web-api