.Net Core“找不到Http错误响应404”错误

时间:2019-06-07 01:40:53

标签: c# angular asp.net-core asp.net-core-mvc

我才刚刚开始进入netcore 2.2,并且尝试从角度调用控制器,但是当我从服务中调用发送联系人电子邮件方法时,会收到“ http://localhost:53270/api/DataController/SendContactEmail/的Http错误响应:找不到404”

您可以清楚地看到我在下面的例程中明确写出了路线

 sendContactEmail(contact: ISubmitModel): Observable<any> {
        return this._http.post<any>('api/DataController/SendContactEmail/', contact)      
    }

和我的控制器方法

[Route("api/[controller]")]
public class DataController : Controller
{
    [HttpPost("[action]")]
    public IActionResult SendContactEmail(ContactUs contact)
    {
        ContactUs form = new ContactUs()
        {
            Email = contact.Email,
            Name = contact.Name,
            Phone = contact.Phone,
            Message = contact.Message
        };

        return Ok(form);
    }

    public class ContactUs
    {
        public string Name { get; set; }
        public string Phone { get; set; }
        public string Email { get; set; }
        public string Message { get; set; }            
    }
}

2 个答案:

答案 0 :(得分:5)

您应该省略 Controller 部分,而仅使用数据

return this._http.post<any>('http://localhost:51889/api/Data/SendContactEmail/', contact)   

答案 1 :(得分:0)

正如其他人提到的那样,您不应在路由中使用 Controller 一词,因为您将Route Attribute与路由内的模板[controller]一起使用时,只会使用名称该控制器的名称,但不包含控制器字。

要使其更具可读性,您可以更改api / data的模板api / [controller],以免引起混淆。 这往往是一种良好做法,因为 如果将来某天您出于某种原因决定更改Controller的名称,并且已将路由绑定到Controller name,则api的消耗性应用程序将中断,因为该路由会发生更改(您不会不需要),显然,使用方必须更改对该路由的所有引用才能正常工作。