Невозможно опубликовать объект из службы angular в веб-API

Я новичок в 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 "";
    }
} 

Это ссылка на ошибку, которую я получаю в своей консоли.

404 означает, что URL-адрес указывает на ресурс, который не был найден. Вы отправляете запрос на 'http://localhost:25875/api/Product/Index', но маршрут этого метода в вашем контроллере — 'http://localhost:25875/api/Product'.

Jota.Toledo 02.02.2019 14:17

Если я вызываю этот же URL-адрес локальный: 25875/API/продукт/индекс со своей html-страницы с помощью ajax, он попадает, почему бы не из почтового запроса от службы angular. @Хота.Толедо . Я попытался изменить то, что вы сказали, но все та же проблема.

gaurav bhatt 02.02.2019 14:25

Вы можете добавить вывод с вкладки сетей как для неисправных, так и для рабочих запросов?

Jota.Toledo 02.02.2019 15:07
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
3
3
615
1

Ответы 1

Вы используете маршрутизацию атрибутов с атрибутом 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

Ссылка Маршрутизация к действиям контроллера в ASP.NET Core

Другие вопросы по теме