2012-09-28 58 views
13

返回类型例如:MVC 4 Web API操作返回:类型与HttpResponseMessage

public class MyController : ApiController 
    { 
     public IEnumerable<MyType> Get()... 

VS

返回HttpResponseMessage:

public class MyController : ApiController 
    { 
     public HttpResponseMessage Get()... 

??

MVC是否将类型封装到HttpResponseMessage内容对象中?除了显式添加格式化程序之外,页面上的结果看起来相同。

与客户有什么不同?

回答

16

没有区别。

如果您返回CLR类型,则无论如何都将使用HttpResponseMessage进行包装。

唯一的区别是,如果您返回HttpResponseMessage,您将有机会直接使用HTTP - 因此您可以设置标题,绕过MediaTypeFormatters等等。

这都是个人喜好和/或在您的行动中执行的活动。

+0

谢谢。我有点想通了。返回'HttpResponseMessage'为响应中可能包含的各种服务提供了更大的灵活性。 –

+1

实际上,如果您使用新的帮助页面生成器功能,则会有一点差异。在HttpResponseMessage的情况下,它将无法确定返回类型,因此它不会生成示例数据。至少在“ASP.NET秋季2012更新BUILD预览”中是这样的 – mdonatas

+1

@mdonatas HttpResponseMessage似乎在颠覆帮助生成器的功能方面做得非常好。曾经有一个HttpResponseMessage 通用的,但对于“类型安全”的原因,它已被删除 - http://aspnetwebstack.codeplex.com/discussions/355170 – Snixtor

相关问题