【问题标题】:I am not hitting my api route in backend controller from angular frontend. What am I doing incorrect?我没有从 Angular 前端访问后端控制器中的 api 路由。我在做什么不正确?
【发布时间】:2019-10-29 18:57:18
【问题描述】:

我收到此错误 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();
}

更多可能有用的信息。这是我的命名空间和路线的名称

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 上!

【问题讨论】:

  • 尝试查看您的代码 this.baseUrl + 'api/SlgCorpNotes/Edit' 是否创建了正确的 URL。在浏览器的网络选项卡中可以看到使用什么url进行API调用
  • 您是否已将 CORS 配置为允许 HTTP OPTIONS 动词?
  • 我会检查 StepUp 和 Jonathon,我确定我有 Cors,我能够为其他方法进行 api 调用
  • 仍然没有运气:(我为正在发送和接收的对象创建了一个模型。它是一个具有一个 int、一个日期时间和一个字符串的对象。这应该很容易吧?我能够轻松发帖!

标签: javascript c# .net angular controller


【解决方案1】:

尝试将其作为 JSON 发送,

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

你的方法体应该有类型的对象

public void Edit([FromBody]TypeOfObject item)

【讨论】:

【解决方案2】:

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

我还得放 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))


  }

【讨论】:

    猜你喜欢
    • 2019-09-29
    • 2021-05-11
    • 1970-01-01
    • 2015-11-30
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多