Angular8应用http刷新时出现405错误。

问题描述 投票:0回答:2

我正在Visual Studio中使用Angular8和.NET Core 3.0开发一个。我有一个页面的形式,这是工作没有任何问题。然而,当我在该页面上按下F5键时,我得到以下错误信息

加载资源失败:服务器响应状态为405(方法不允许)[。http:/localhost:51871notifications] 。

这是组件类中的提交函数

  onSubmit() {

    if (this.registerForm.invalid) {
      return;
    }

    let post: NotificationsInterface = {
      email: this.registerForm.value.email,
      subject: this.registerForm.value.subject,
      text: this.registerForm.value.text,
    };

    this.http.post("Notifications", post).subscribe(result => {
      console.error("ok");

    }, error => console.error("error"));

  }

这是C#中的通知类

public class Notifications
{
    public string email { get; set; }
    public string subject { get; set; }
    public string text { get; set; }
}

这是C#中的控制器

using Microsoft.AspNetCore.Mvc;
using HomeHelper.Models;

namespace HomeHelper.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class NotificationsController : Controller
    {
        [HttpPost]
        public IActionResult Post([FromBody]Notifications notification)
        {

            return Ok();

        }
   }
}

当我在C#中注释控制器部分时,错误消失了,但数据无法接收。要避免这种错误,最好的做法是什么? 该错误只发生在网址""。http:/localhost:51871通知。 "最好的问候!

更新:我已经添加了控制器的完整代码和指定错误的网址。

c# angular typescript post
2个回答
1
投票

你可以通过创建一个 取道 在你的控制器中使用相同的端点。

当你刷新你的Angular应用程序时,因为你有一个路由的 localhost:51871/notifications 在你的控制器中,你的服务器解析了路由,并将你指向控制器,但目前没有Get方法(因为当你刷新时浏览器会发送一个get请求),所以它给你错误。

我想要么采用哈希定位策略,要么尝试改变angular路由,或者你可以做的是你所有的后台api url应该工作,如果有api在url路径中的话

喜欢 localhost:51871/api/notifications 这将有助于排序api被调用


1
投票

尝试使用哈希定位策略。

RouterModule.forRoot(routes, {useHash: true})
© www.soinside.com 2019 - 2024. All rights reserved.