我试图想出一种方式发布到Web API控制器与一个对象,但有不同的,处理,对象返回。我找不到解决这个问题的方法。如何从Web API发布返回新类型?
这里是我的方法,我的MVC项目,职位,以我的Web API项目
public dynamic PostStuff<X>(string action, X request)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var task = client.PostAsJsonAsync(new Uri("host/api/somecontroller/post, request);
task.Wait();
var response = task.Result;
return response;
}
}
这是我的Web API控制器代码
public HttpResponseMessage Post([FromBody] FooObject foo)
{
var res = Request.CreateResponse(HttpStatusCode.OK,
new ValidationResponse<FooObject>
{
ID = new Random().Next(1000, 1000000),
Content =
new List<IContent>()
{
{
new Content()
{
Name = "TheContent",
Type = "SomeType",
Value = "This is some content for the page : " + foo.Bar
}
}
},
Product = new ProductFoo(),
Validated = true
});
return res;
}
}
当我把我的WebAPI控制器代码休息, res变量被正确创建。一旦处理返回到PostStuff方法,我所得到的只是一个StreamResponse,没有在Web API控制器中创建的ValidationResponse对象的跟踪。没有错误,但我不能在回复成功后的回复中使用任何内容。我如何从我的发布方法中提取ValidationResponse?
你不能将'response'转换成'HttpResponseMessage'吗? – alexo 2014-12-04 21:16:34
您应该使用'await'而不是'.Wait()'。 – SLaks 2014-12-04 21:28:00
这也是真的 – alexo 2014-12-04 21:30:40