我有一个 WCF REST 服务,其操作如下:
[OperationContract]
[WebInvoke(UriTemplate = "/User", BodyStyle = WebMessageBodyStyle.Bare, Method = "POST", RequestFormat = WebMessageFormat.Json)]
void User(User user);
当我从 Fiddler 调用它时,如果我像这样指定 Content-Type="application/json" 它工作正常:
Content-Type: application/json
Host: localhost:58150
Content-Length: 172
Expect: 100-continue
但是,如果我排除 Content-Type,那么我会收到错误 400,因为它会尝试将请求正文作为 XML 处理。这很烦人,你真的会认为设置 RequestFormat = WebMessageFormat.Json 会成功,这样我就不必指定 Content-Type 但事实并非如此。事实上,如果我放弃“RequestFormat”,一切都不会改变。我也尝试过为 WebMessageBodyStyle 'wrapped',但 DTO 来自 null。
澄清一下,如果我在帖子正文中也使用 XML(并省略 Content-Type),就会发生这种情况......所以我真正想要完成的是:
使用 WebInvoke 时如何使我的 WCF Rest 方法不需要 Content-Type(我希望 WCF 能够自动解决)
这让我发疯请帮助。