Я пытаюсь создать базовую возможность размещать комментарии на блоге, получить следующее сообщение об ошибке для запроса POST к моему API с помощью Angular2:Failed http.post с Angular2 для ASP.NET CORE API
Error in comment.service: Response with status: 0 for URL: null
форма кнопки отправки вызывает мой комментарий компонент, comment-form.component.ts
onSubmit() {
this.submitted = true;
//TODO: replace hardcoded with form fields
this.newComment = new CommentInputViewModel("temp", 0, 0, true, "null", 0);
this.newComment.text = this.model.text;
this.newComment.ownerID = 6;
this.newComment.parentID = 1305;
this.newComment.score = 0.5;
this.newComment.isFact = true;
this.newComment.sideID = 1073;
this.newComment.sideText = "For";
this._postService.postNewComment(this.newComment)
.subscribe(comment => this.returnedComment = comment,
error => this.errorMessage = <any>error);
console.log("commentList.component - After onSubmit:" + this.returnedComment);
return JSON.stringify(this.model);
}
Который называет мою службу к API:
postNewComment(newComment: IComment): Observable<IComment>{
let _body = JSON.stringify(newComment);
let _headers = new Headers();
_headers.append('Content-Type', 'application/json');
let _options = new RequestOptions({ headers: _headers });
return this._http.post(this._postNewCommentUrl, _body, _options)
.map((res:Response) => res.json().value)
.catch(this.handleError);
}
В результате на стороне API, из VS2015 отладчика не ошибка 204 (без содержания):
] 1
Что я пробовал:
В основном исключено Вопросы COR. Большинство других вопросов Angular2 POST здесь были проблемами COR. Поскольку запрос ударяет моего отладчика Visual Studio и возвращает 204, я не думаю, что это так. Плюс мой CORE startup.cs имеет «builder.AllowAnyOrigin();.. Как политика
команды получают от одной службы к тому же API, работает нормально, я могу прочитать комментарии я ранее созданные на стороне API
.
Перехватив вызов почтальона производит следующее:
Если я изменить запрос почтальона путем изменения «текст» для json и вставка в модель, он отлично работает. Он обращается к методу «Почта» API и возвращает 200, а текст json - «true». Смотри ниже.
Это выглядит как тело и заголовки не передаются. В отладчике, как получить передается фоновым Angular2 код:
В соответствии с рекомендациями ниже, вот Dev-инструменты ScreenCap. Показывает почти то же, что и POSTMAN.
Вы должны получить вызов OPTIONS, за которым следует * POST. 204 не является ошибкой; это означает, что сервер не имеет контента для отправки обратно, а не для входящего запроса. Если запрос был искажен, вы получите ошибку 4xx. – jonrsharpe
Согласен, хотя сервер отправляет 204, потому что angular2 POST не работает. Когда он работает (с POSTMAN), он возвращает json 'true' и 200. Я изменил свой вопрос выше, чтобы показать метод контроллера в Visual Studio, который попадает, когда POSTMAN отправляет сообщение, тиски, когда мой метод angular2 делает. – Jason
Пробовал ли вы отлаживать приложение ASP.NET Core, чтобы увидеть, что там происходит? Кроме того, вы проверили, можно ли вызывать услугу за пределами контекста браузера (где CORS не выполняется)? Запрос OPTIONS, который вы видите, ожидается; то, что отсутствует, - это последующий запрос POST (который затем будет содержать ваши данные). Я вижу, что вы используете Firefox, можете ли вы попробовать это в Chrome? Chrome часто показывает немного больше информации о неудавшихся запросах CORS. – poke