Я новичок в angular, я сделал приложение в Visual Studio 2017, используя angular 6 и asp.net core 2.0. Я не могу опубликовать объект из службы angular в веб-API. Веб-API работает нормально, когда я вызываю его с HTML-страницы с помощью вызова Ajax, но не работает когда сообщение запрашивается из угловых служб. Я использовал все возможные решения, такие как изменение заголовка HTTP, применение [FromBody] в параметре веб-API и т. д.
Ниже приведен код для PostRequest
createProduct(product): Observable<ProductModel> {
const httpHeaders = this.httpUtils.getHTTPHeaders(); ///Format is result.set('Content-Type', 'application/json')
return this.http.post<ProductModel>('http://localhost:25875/api/Product/Index' , product, { headers: httpHeaders });
}
Вот мой код контроллера
[Route("api/Product")]
public class ProductController : Controller
{
[HttpPost]
public string Index([FromBody]ProductModel Product)
{
Debug.WriteLine("Called Index");
return "";
}
}
Если я вызываю этот же URL-адрес локальный: 25875/API/продукт/индекс со своей html-страницы с помощью ajax, он попадает, почему бы не из почтового запроса от службы angular. @Хота.Толедо . Я попытался изменить то, что вы сказали, но все та же проблема.
Вы можете добавить вывод с вкладки сетей как для неисправных, так и для рабочих запросов?





Вы используете маршрутизацию атрибутов с атрибутом HttpPost по умолчанию, но вызываете имя действия в URL-адресе запроса.
Вам нужно будет обновить действие, чтобы оно соответствовало желаемому URL-адресу.
[Route("api/[controller]")]
public class ProductController : Controller {
//POST api/product/index
[HttpPost("[action]")]
public string Index([FromBody]ProductModel Product) {
Debug.WriteLine("Called Index");
return "";
}
}
Использование HttpPost без шаблона маршрута аналогично вызову
[HttpPost("")]
или
[HttpPost]
[Route("")]
который будет перенаправляться на POST api/product без имени действия. Вот почему вы получаете 404 Not Found при запросе POST api/product/index
404 означает, что URL-адрес указывает на ресурс, который не был найден. Вы отправляете запрос на
'http://localhost:25875/api/Product/Index', но маршрут этого метода в вашем контроллере —'http://localhost:25875/api/Product'.