我正在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通知。 "最好的问候!
更新:我已经添加了控制器的完整代码和指定错误的网址。
你可以通过创建一个 取道 在你的控制器中使用相同的端点。
当你刷新你的Angular应用程序时,因为你有一个路由的 localhost:51871/notifications
在你的控制器中,你的服务器解析了路由,并将你指向控制器,但目前没有Get方法(因为当你刷新时浏览器会发送一个get请求),所以它给你错误。
我想要么采用哈希定位策略,要么尝试改变angular路由,或者你可以做的是你所有的后台api url应该工作,如果有api在url路径中的话
喜欢 localhost:51871/api/notifications
这将有助于排序api被调用
尝试使用哈希定位策略。
RouterModule.forRoot(routes, {useHash: true})