我有一个在 .net 4 中运行的 REST WCF 服务,我已经测试了它正在运行的 Web 服务并接受了我向它发出的 HttpRequest。但是我在尝试访问 Web 服务中的 HttpRequest 主体时遇到了问题。我已经尝试使用 Fiddler 和我的 WinForm 应用程序发送附加在 HttpRequest 上的随机大小的数据,但我似乎无法在运行时找到任何可以找到我的请求正文所在的对象。我最初的直觉是查看 HttpContext.Current.Request.InputStream
但该属性的长度为 0,所以我尝试查看 IncomingWebRequestContext
该对象甚至没有没有方法或属性来获取 HttpRequest 的主体。
所以我的问题是,实际上是否有一种方法可以访问 WCF 中的 HttpRequest 请求正文?
附言: 请求体中的数据是 JSON 字符串,对于响应,它也会将响应体中的数据作为 JSON 字符串返回。
最佳答案
更简单,这个答案在WCF + REST: Where is the request data?工作正常。
此外,如果您的请求主体是可反序列化的,您可以只传递一个类。除非有一些拼写错误,否则这应该有效:
public class Banana
{
public string Colour;
public int Size;
}
...
[WebInvoke(
Method = "POST",
UriTemplate = "bananas",
ResponseFormat=WebMessageFormat.Json,
RequestFormat=WebMessageFormat.Json)]
string CreateBanana(Banana banana);
...
public string CreateBanana(Banana banana)
{
return "It's a " + banana.Colour + " banana!";
}
使用数据 {"Colour": "blue", "Size": 5}
对此资源进行 POST 应该返回 "It's a blue banana!"
。
关于json - 在 REST WCF 中读取 HttpRequest 主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3050110/