c# - StatusCodeResult 或 ResponseMessageResult

标签 c# asp.net-web-api asp.net-web-api2

我看到从 Web API 以两种不同的方式发送响应。

return ResponseMessage(new HttpResponseMessage(HttpStatusCode.UnsupportedMediaType));

return StatusCode(HttpStatusCode.UnsupportedMediaType);

双方最终都将 415 返回给调用者。我已经查看了这两个结果类的 MSDN 文档,但仍然无法弄清楚它们之间的区别或为什么我会选择一个而不是另一个。

最佳答案

使用 StatusCodeResult 实现简单的单元测试。

示例(在 xUnit 中):

var result = Assert.IsType<StatusCodeResult>(valuesController.Blah(data));
Assert.Equal(415, result.StatusCode);

回应评论: 我更喜欢下面这样的东西:

public IHttpActionResult Get(int id)
{
    if(id == 10)
    {
        return StatusCode(HttpStatusCode.NotFound);
    }

    return Ok("Some value");
}

而不是:

public IHttpActionResult Get(int id)
{
    if(id == 10)
    {
        return ResponseMessage(Request.CreateResponse(HttpStatusCode.NotFound));
    }

    return Ok("Some value");
}

关于c# - StatusCodeResult 或 ResponseMessageResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31191039/

相关文章:

c# - 在通用存储库模式中使用可用的方法语法

c# - 如何将MVC C#服务器错误+数字转换为行号

javascript - 使用 ASP.NET Web api 为 Office 加载项添加 Web 服务

asp.net-web-api - ASP.NET Web API 标识 token - 负载平衡方案

asp.net-web-api2 - WebApi FromUri 用大括号绑定(bind)url参数

c# - .NET (C#) 应用程序插件的依赖 hell

c# - 是否可以从 C# WebApi 重用/调用 C# 网站中的处理程序?

c# - 在 WebAPI 响应中嵌入其他 API 资源

c# - OData 错误响应缺少异常详细信息 C#

c# - 从我的电脑发送信息到我的手机