【发布时间】:2019-10-22 12:39:51
【问题描述】:
我刚刚开始进入 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; }
}
}
【问题讨论】:
-
你的 api 路由应该是
'api/Data/SendContactEmail' -
正如@penleychan 提到的,您不需要在 Data 之后添加“Controller”字样,当 MVC 生成路由时,它只使用控制器名称,即 Data 而不是 DataController
-
@penleychan 所以我试过了,现在得到这个错误“POST localhost:51889/api/Data/SendContactEmail 404(未找到)”我还需要做些什么吗?我需要注册这个控制器吗?
-
@TerranceJackson 你确定端口的 url 是正确的吗?
-
@Sajeetharan 是的,我正在使用 dotnet run 命令给我的 url。但是当我只从 vs2019 直接运行 IIS 时,它可以使用 Postman 应用程序。它只是不能用我的 angular 8 和 dot net run 命令运行
标签: c# angular asp.net-core asp.net-core-mvc