RESTful .net - 没有Content-Type的POST

时间:2013-01-16 01:43:28

标签: c# .net json rest

是否可以让Web服务接受没有内容类型标头的json格式化请求?

当我传递Content-type:application / json标头时,POST动词效果很好。如果停止,则抛出400错误。我在这里经历了很多问题,问他们为什么要回400,答案就是内容类型。那么在服务器端可以代表用户“填写”吗?

2 个答案:

答案 0 :(得分:0)

使用默认的.NET webstack无法使用某种内容标头来告诉它如何解释请求。如果你想进入ASP.NET堆栈的内部(你可以使用反射器应用程序,如ILSpy),你可能会找到一个拦截点,但你很可能必须做一些自定义的IIS集成来获得模块拦截请求,甚至可能在ASP.NET堆栈涉及之前。

对于大多数人来说,让JSON请求应用程序引入标题会更容易。

此外,我鼓励您开始学习如何使用Reflector来探索这些堆栈是如何工作的,它们实际上是复杂的,大而且可扩展的,代价是工程化(秃头猜测现在说缺乏经验的IIS开发人员需要大约50个小时来设计这种技术,如果它可以整齐地完成)。

答案 1 :(得分:0)

您使用的是WebAPI还是ASP.NET MVC?我有一个解决方案,虽然有些人可能会对我尖叫。

  • 您可以创建一个属性,尝试将请求的正文反序列化为您要为该特定操作查找的对象。如果有效,则可以使用RequestContext将其传递到参数列表中。我不确定你需要设置的确切属性是什么,但我记得在ASP.NET MVC中做了类似的事情。

希望有所帮助。

P.S。使用JSON.Net,它有很多有用的反序列化方法,这将使这变得轻而易举。