我没有从角度前端在后端控制器中击中我的api路由。我在做什么不正确?

时间:2019-10-29 18:57:18

标签: javascript c# .net angular controller

我遇到此错误zone.js:3243 POST https://localhost:44424/api/SlgCorpNotes/Edit 405(不允许使用方法)

这是我的服务api调用

  updateMessage(message: any) {
    console.log("at service")
    console.log(message)
    return this.http.post(this.baseUrl + 'api/SlgCorpNotes/Edit', message)
  }

我在console.log消息中收到此消息。

Object
departments: 4
noteBody: "asdf"
weeks: SLGTime {year: 2020, week: 12, quarter: 1, weekEnding: "2020-01-18T00:00:00", lyweekEnding: "2019-01-19T00:00:00"}
__proto__: Object

所以我知道我正在向后端的.net控制器发送信息。这是我的控制器方法。可能不是为了正确接收角度信息而设置的?

[HttpPost]
[Route("api/SlgCorpNotes/Edit")]
public void Edit([FromBody]object item)
{

    _SLGContext.Entry(item).State = EntityState.Modified;
    _SLGContext.SaveChanges();
}

更多有用的信息。这是我的名称空间和Route的名称

namespace mocHub2.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class SlgCorpNotesController : Controller

这是我要发送的表单组信息。

this.optionsForm = new FormGroup({
  departments: new FormControl(),
  weeks: new FormControl(),
  noteBody: new FormControl()
})

我认为这是即时通讯没有正确命名。抱歉,这是我的第一个.net / angular项目。通常我只是在剃刀视图和.net mvc上!

2 个答案:

答案 0 :(得分:1)

尝试将其作为JSON发送,

return this.http.post(this.baseUrl + 'api/SlgCorpNotes/Edit', JSON.stringify(message));

并且您的方法主体应具有类型的对象

public void Edit([FromBody]TypeOfObject item)

答案 1 :(得分:0)

我手动创建了一个对象。新消息。

我还必须放置HttpHeaders

const headers = new HttpHeaders()
  .set('Content-Type', 'application/json;charset=UTF-8')

let options = { headers: headers };

这是更新的方法。

updateMessage(message: any) {
    console.log("at service")
    console.log(message)
    //var newMessage = new CorpNotes(message['departments'], message['noteBody'], message['weeks'].weekEnding)
    //console.log(newMessage)
    //console.log(JSON.stringify(newMessage))
    var newMessage = {
      "Departments": message["departments"],
      "Note": message["noteBody"],
      "WeekEnding": message["weeks"].weekEnding
    }
    console.log(newMessage)
    const headers = new HttpHeaders()
      .set('Content-Type', 'application/json;charset=UTF-8')

    let options = { headers: headers };

    return this.http.post(this.baseUrl + 'api/SlgCorpNotes/Edit',newMessage, options);
    //return this.http.post(this.baseUrl + 'api/SlgCorpNotes/Edit', JSON.stringify(newMessage))


  }