当我向ODataController发送POST请求时,表中插入了记录,但是出现以下错误“远程服务器返回错误:(406)不可接受。” GET调用相同的控制器就可以了。
我要打的URL是http://localhost:24419/User和POST的JSON正文。 我要发布以下JSON(重命名的属性):
{
"User_ID":0,
"User_Name":"email@domain.com",
"First_Name":null,
"Middle_Name":null,
"Last_Name":null,
"Telephone_Number":null,
"Alternate_Email":null,
"Record_Update_UTC_Datetime":"2019-08-06T19:42:59.5380526Z",
"Record_Update_Application_User_Name":"username",
}
适用于以下型号
public class User
{
[Key]
public int User_ID { get; set; }
[Required]
[StringLength(255)]
public string User_Name { get; set; }
[StringLength(32)]
public string First_Name { get; set; }
[StringLength(32)]
public string Middle_Name { get; set; }
[StringLength(64)]
public string Last_Name { get; set; }
[StringLength(64)]
public string Telephone_Number { get; set; }
[StringLength(255)]
public string Alternate_Email { get; set; }
[Required]
public DateTime Record_Update_UTC_Datetime { get; set; }
[Required]
[StringLength(128)]
public string Record_Update_Application_User_Name { get; set; }
}
下面是控制器:
public class UserController : ODataController
{
[HttpGet]
[EnableQuery(MaxExpansionDepth = 10, PageSize = 50, MaxNodeCount = 50)]
public async Task<IHttpActionResult> GetUser()
{
var results = await _userService.GetUsers();
return results.MakeWebApiActionResult(this);
}
public async Task<IHttpActionResult> Post([FromBody] User user)
{
var results = await _userService.AddUser(user);
return Ok(results);
}
}
我期望200 OK响应,但实际输出是:
“ ExceptionMessage”:“远程服务器返回错误:(406)不可接受。”
答案 0 :(得分:0)
根据asp.net-web-api docs
您需要使用public class UserController : ODataController
{
/*...*/
[HttpPost]
public async Task<IHttpActionResult> Post([FromBody] User user)
{
var results = await _userService.AddUser(user);
return Ok(results);
}
/*...*/
属性。试试这个:
resetGrid
答案 1 :(得分:0)
406特定于WebApi控制器(准确地说,是REST调用的响应头,指示以所需方式格式化输出数据时出现问题),而不必对在WebApi控制器中进行的OData调用进行任何操作。
请用[Produces(“ application / json”)]装饰您的课程 并且在您要从API客户端调用的请求以及请求主体中,还请在请求中添加一个值为“ application / json”的“ Accept”标头。
这应该可以解决您的问题。另外,希望您不要在startup.cs文件中使用MVC服务的mvc配置服务wrt格式程序。