2011-11-01 34 views
3

我很难找到解决办法,让传入的POST请求触及我的服务声明,除非通用的“application/xml”或“application/json”被设置为请求的内容类型:供应商特定的MIME作为传入的WCF REST POST请求中的内容类型(例如application/vnd.company + xml)

由于我们使用自定义MIME类型,例如“application/vnd.company + xml”,这实际上应该是Content-Type头的值。但显然WCF无法从中得出请求格式。有谁知道这个解决方案吗?

总之:我想

Content-Type: application/vnd.company+xml, and 
Content-Type: application/vnd.company+json 

分别映射传入POST请求,XML和JSON,但截至目前,该服务将只响应当我发出带有

POST请求
Content-Type: application/xml, or 
Content-Type: application/json 

平台是.NET4和WCF。

+0

您不必使用自定义媒体类型来描述您的消息,只需将JSON-LD与REST特定的RDF词汇表以及您的应用程序特定词汇表一起使用即可。 – inf3rno

回答

1

使用WCF Web API而不是WCF REST。其中一个主要优点是它可以让您灵活地使用任何您想要的媒体类型。

如果你真的被困在.NET 4中的WCF REST,那么请将你的请求参数改为流类型。这将允许您发布任何你想要的数据。你需要自己照顾反序列化。

+0

谢谢,Darrel。但Web API仍处于预览状态。你会在生产代码中使用它吗?关于WCF REST/.NET4解决方案,是否可以坚持一种行为来嗅探Content-Type头并分别将RequestFormat设置为WebMessageFormat.Xml/Json? – user1023810

+0

我会在WCF REST之前的产品代码中使用WCF Web API。如果你确实知道WCF内部组件,你可能可以做这个开关,但我不会亲自尝试。 –

+1

再次感谢Darrel。毕竟我是为了流类型。我们不仅可以处理自己选择的内容类型,而且手动反序列化还可以控制返回给客户的故障,比如,如果无效数据类型或非格式良好的XML被发布到我们的服务中。 – user1023810

相关问题