.Net Core "Http failure response 404 Not Found"错误



我刚刚开始进入netcore 2.2,我正在尝试从angular调用我的控制器,但是当我从我的服务调用发送联系人电子邮件方法时,我收到"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; }            
    }
}

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

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

正如其他人所提到的,您不应该在路由中使用控制器一词,因为您将路由属性与路由内的模板 [controller] 一起使用,它只会采用该控制器的名称,而不包含控制器单词。

为了使其更具可读性,您可以更改 api/data 的模板 api/[controller],这样就不会造成混淆。这往往是一种很好的做法,因为如果将来有一天您出于某种原因决定更改控制器的名称,并且已将路由绑定到控制器名称,则 API 的消费应用程序将中断,因为路由会发生变化(您不希望这样(,显然消费应用程序必须更改对该路由的所有引用才能正常工作。

最新更新