c# - 使用角度上传数组:如何从后端获取错误?
问题描述
我有一个非常简单的 Angular 应用程序,它使用 post 向后端/服务器(用 C# 编写的 MS AspNetCore 应用程序)发送一个字符串列表(仅对于这个例子,实际上它是一个称为协议的更复杂数据的列表)方法。此功能运行良好,但由于我对 angular 非常陌生,因此在此过程中我很难处理发生在服务器端的故障。如果出现问题,我想在客户端显示错误消息。
这是我到目前为止通过定位角度教程构建的内容: 角度component.ts文件基本上有一个上传方法:
constructor(
private readonly SVC: UploadService) { }
uploadStringlist(): void {
let sarray: string[] = [];
sarray.push("string1");
sarray.push("string2");
this.SVC.uploadList(sarray).subscribe(
_ => { this.finished,emit(`protocols sent: next`)},
err => { this.finished.emit(`Protocols sent: error` + err)},
() => { this.finished.emit(`Protocols sent`)});
}
而upload.service.ts文件基本上有这个方法:
uploadList(slist: string[]): Observable<string> {
return this.http.post<string>(apiurl, slist, httpOptions)
.pipe(
tap(res => log("uploaded protocol list to server", res)),
catchError(handleError<string>("test")));
}
管道只是为了完整性(我不想从原始代码中过多地更改我的示例)
所以在服务器端只有这个uploadController:
[HttpPost]
public IActionResult Post(string[] slist)
{
foreach (var s in slist)
{
// do something
}
return StatusCode(409);
//return Ok();
}
所以,无论我在控制器上返回什么,我都会在客户端得到相同的结果。这意味着我得到了结果:“协议已发送”。
但理想情况下,如果我在控制器中返回错误,我会得到一个结果列表(字符串数组中的每个条目一个)或者至少一个错误。但我不知道如何实现这一目标。
解决方案
查看错误的方法之一是抛出exception
,例如:
throw new ArgumentException("Something bad happened.");
此外,对于 Web API 项目,请确保您已从web.config
文件中打开错误报告(但在投入生产时将其关闭):
<system.web>
<customErrors mode="Off" />
</system.web>
推荐阅读
- spring-boot - 如何将 startAllRoutes 函数从 2.23.2 迁移到 3.1.0?
- google-apps-script - 如何在我的 Google Suite 插件中保存数据
- python - 如何使用 pandas 和 matplotlib 在 Jupyter 中绘制多个系列?
- java - 配置失败:@BeforeMethod 设置:java.lang.NullPointerException
- flutter - 单元测试蜂巢抽象层
- python - 我的网站的烧瓶冻结模块出错
- kendo-grid - 防止剑道网格自动保存
- javascript - 字体大小更改 onclick 超过 div
- php - 两个函数之间的问题共享变量 | PHP
- c - c中的内存对齐和填充