【发布时间】:2016-04-05 01:43:26
【问题描述】:
我正在查看 this link,它展示了如何从 Web API 2 迁移到 MVC 6。
我试图在我的控制器中使用HttpRequestMessage 绑定的 Action 方法。这适用于 Web Api 2。
[Route("", Name = "AddTaskRoute")]
[HttpPost]
public Task AddTask(HttpRequestMessage requestMessage, [FromBody]NewTask newTask)
{
var task = _addTaskMaintenanceProcessor.AddTask(newTask);
return task;
}
requestMessage 包含 Http 请求的详细信息,例如 headers、verb 等。
我正在尝试使用 MVC 6 获得相同的结果,但 requestMessage 似乎绑定不正确,并且它显示了详细信息,例如当操作实际上是 POST 时方法是 GET。我相信我没有按照文章建议配置 WebApiCompatShim,因此绑定没有正确完成。但是我没有"Microsoft.AspNet.Mvc.WebApiCompatShim": "6.0.0-rc1-final"版本中提供的扩展方法services.AddWebApiConventions();
有人试过这个成功了吗?
PS:我的控制器中可用的Request 属性似乎包含有关http 请求的详细信息,但我想要HttpRequestMessage 实例。
【问题讨论】:
-
您在使用
Request时遗漏了哪些具体信息? -
Request属性正确。但是我想使用HttpRequestMessage实例来使用它的方法 CreateResponse() 以便在创建资源时它会向该请求返回 201。这就是它在 Web Api 2 中的样子 -
您应该也可以使用 MVC6 获得所有这些。看看我的回答。
标签: migration asp.net-core asp.net-core-mvc