Web Api中的Post请求中的Request Body为空

时间:2016-03-24 15:01:06

标签: c# post asp.net-web-api2

我有一个像这样的动作方法

[ResponseType(typeof(DiaryDeviceDTO))]
[HttpPost]
[Route("api/Device/Register")]
public async Task<IHttpActionResult> Register(DeviceRegistration deviceRegistration)
{
    if (deviceRegistration == null)
    {
        return BadRequest("Request body is null");
    }

    DiaryDevice device = await _deviceBl.Register(deviceRegistration.RegistrationCode);
    var deviceDto = Mapper.Map<DiaryDevice, DiaryDeviceDTO>(device);
    return Ok(deviceDto);
}

当我向Post Man请求body时,我将deviceRegistration对象视为null。我的请求正文如下 -

{
    "ApiKey" : "apikey",
    "RegistrationCode" : "123",
    "ImeiNo" : "12345"
}

我已将ContentType设为application/json

然后我尝试阅读下面的请求内容 -

string body = await Request.Content.ReadAsStringAsync();

我在这里得到body = ""

但是当我运行我的单元测试时,我得到了deviceRegistration。那么我的代码有什么问题。为什么我的代码仅适用于单元测试。我正在使用Web Api 2.2

注意

很抱歉提出这个问题。其实这是我的错。我不小心在Application_BeginRequest()方法中读取了请求体以进行日志记录。我将这些日志代码移到Application_EndRequest()方法中,一切都变好了。

1 个答案:

答案 0 :(得分:3)

鉴于您已展示的内容,这应该适用于 FileInfo[] excelFiles = di.GetFiles("*.xlsx"); if (excelFiles.Length > 0) { Dts.Variables["ExcelFilesList"].Value = excelFiles.Select(file => file.FullName).ToList(); }

的请求
api/device/register

注意[FromBody]属性。