如何解决ProblemDetails不会序列化回ProblemDetails对象
我有一个用核心3.1编写的REST服务。出现错误时,我使用控制器中的Problem()方法返回一个ProblemDetails对象。当我通过Swagger UI运行此程序时,我得到了期望的结果。
{
"isError": true,"responseException": {
"exceptionMessage": {
"type": "ApplicationException","title": "Internal Server Error","status": 500,"detail": "An Error Happened. I want this message to bubble up.","instance": "/v1/TestAdapter/GetError","traceId": "|31cf435b-44b49327cac802b2."
}
}
}
当我从服务呼叫中获得此信息时,我想将其序列化为问题详细信息对象。但这是行不通的。我一直在寻找应该序列化到的对象。
我可以这样做并获取数据。
var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
但这不起作用。 (所有字段均为空。)
var typedBody = JsonConvert.DeserializeObject<ProblemDetails>(responseText,new JsonSerializerSettings());
在这里我应该怎么做才能将其重新整理成一个ProblemDetails对象?
解决方法
要进行序列化,至少需要:
- 一个空的或默认的构造函数-否则,您将得到一个错误
- 可设置的属性。对于System.Text.Json和JSON.net,私有可设置属性将起作用。只读属性不起作用。例如
public string WontWork { get; }
public string DoesWork { get; private set; }
,
所以问题是我自己造成的。我安装了一个包装,该包装正在更改我的返回对象。我已经安装了它,作为测试将错误消息返回给调用者的最佳方法。为此,我创建了一个客户端不知道如何处理的返回值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。