Невозможно отправить объект из углового сервиса в веб-интерфейс - PullRequest
0 голосов
/ 02 февраля 2019

Я новичок в angular, я подал заявку в visual studio 2017, используя angular 6 и asp .net core 2.0.Я не могу Опубликовать объект из углового Сервиса в веб-API.Web API работает нормально, когда я вызываю его с HTML-страницы, используя вызов Ajax, но не работает, когда Post запрашивает у angular Services.Я использовал все возможные решения, такие как изменение 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 "";
    }
} 

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

1 Ответ

0 голосов
/ 02 февраля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...