我才刚刚开始进入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; }
}
}
答案 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的消耗性应用程序将中断,因为该路由会发生更改(您不会不需要),显然,使用方必须更改对该路由的所有引用才能正常工作。