#c# #angular #api
#c# #угловой #API
Вопрос:
Я отправляю текстовый ответ из API, но подписка angular 10 считывает его как ошибку, когда она не завершается сбоем.
Редактировать:
Чтобы уточнить, желаемый ответ поступает и понимается в обработчике подписки angulars как ошибка, когда это не ошибка.
РЕДАКТИРОВАТЬ 2, Наконец, ошибка после перезапуска VS
В postman статус возвращается как двести Ok. Журнал консоли никогда не достигает успеха, но успешный ответ поступает как ошибка. Что я сделал не так?
Служба Angular:
startSession(session: Session) {
let sessionForStart = new StartDto(session); // simple mapping so as not take all properties
return this.http.post(this.baseUrl '/start', sessionForStart);
}
Угловой:
startSession(session: Session) {
const options = {
// some option stuff for dialog removed for brevity
};
this.dialog.open(options);
this.dialog.confirmed().subscribe((confirmed) => {
if (confirmed) {
this.sessionService.startSession(session)
.subscribe(
data => console.log(data),
error => this.toastr.error(error)
);
}
});
}
API:
public async Task<IActionResult> StartSession(Dto dto)
{
try
{
string sessionResult = await sessionControllerControls.StartSessionController(dto);
return Ok(sessionResult);
}
catch (Exception ex)
{
throw new Exception(
$"Starting failed with the following exception:n{ex.Message}");
}
}
Комментарии:
1. консоль. зарегистрируйте ошибку, чтобы определить причину сбоя.
2. В этом проблема, это не сбой, правильный ответ поступает как ошибка. Обновил вопрос для ясности.
3. является ли код
sessionService.startSession(session)
прямым или у вас есть какие-либо манипуляции с ответом в нем.?4. Я обновлю вопрос, но довольно прямолинейно.
5. Спасибо, люди, перезапустил VS, и он ведет себя по-другому, похоже, это ошибка, а также правильный ответ.
Ответ №1:
Вы получаете текст из своего API, а не json. Вот что означает ошибка (неожиданный токен «S» в позиции 0 …). Вы можете указать http ожидать определенный тип ответа, например текст:
return this.http.post(this.baseUrl '/start', sessionForStart, {responseType: 'text'});
Комментарии:
1. Спасибо, просто смотрел на API, было бы лучше отправить JSON из API вместо этого как
JsonResult
?2. Я недостаточно хорошо разбираюсь в .net, чтобы рассказать вам, как правильно отправить ответ в виде json. Я думаю, что в вашем случае
await sessionControllerControls.StartSessionController(dto)
возвращается текст. Возможно, вы можете задать другой вопрос по этой теме. приветствия.