Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 使用$http.delete从angular发布到aspnetcore api时出现不支持的媒体类型错误_Angularjs_Asp.net Core - Fatal编程技术网

Angularjs 使用$http.delete从angular发布到aspnetcore api时出现不支持的媒体类型错误

Angularjs 使用$http.delete从angular发布到aspnetcore api时出现不支持的媒体类型错误,angularjs,asp.net-core,Angularjs,Asp.net Core,在发布到aspnetcore api时,我得到一个415 http错误结果。 如果我的端点标记为[HttpPost]而不是[HttpDelete],则不会发生这种情况 在aspnetcore api控制器中: [HttpDelete] public async Task<IActionResult> Delete([FromBody]EntityViewModel vm) { var obj = new Object(); obj.atr1 = 1; obj.atr2 = 2

在发布到aspnetcore api时,我得到一个415 http错误结果。 如果我的端点标记为[HttpPost]而不是[HttpDelete],则不会发生这种情况

在aspnetcore api控制器中:

[HttpDelete]
public async Task<IActionResult> Delete([FromBody]EntityViewModel vm)
{
 var obj = new Object();
 obj.atr1 = 1;
 obj.atr2 = 2 ;

 $http.post(route, obj)
    .then(function (response) {
EntityViewModel.cs

public class EntityViewModel
    {
        public int Atr1 { get; set; }
        public int Atr2 { get; set; }
    }

先看了你的问题,我有点困惑

为什么使用
$http.post
发出删除请求?为什么
$http.delete
不用于此目的?然后我阅读了更多关于AngularJS
$http.delete
的内容,发现无法向服务器发送正文。然后我问自己,为什么你可以发送一个删除请求的机构。这里有一个很好的问题:-规范允许删除带有主体数据的请求

长话短说

ASP.NET Core可以使用正文中发送的JSON数据处理删除请求。因此控制器部分是有效的

[HttpDelete]
public async Task<IActionResult> Delete([FromBody]EntityViewModel vm)
{

yout API route需要什么样的数据类型?@SterlingArcher用EntityViewModel类更新了这个问题。我的问题是因为我的aspnet核心方法中有
[FromBody]
属性。我一把拿出来就没事了。
var obj = new Object();
obj.atr1 = 1;
obj.atr2 = 2 ;

$http(
  {
    method: 'DELETE',
    url: route,
    headers: {
        'Content-Type': 'application/json'
    },
    data: obj
  }
).then(function (response) {