我正在开发一个 ASP.NET 2.2 Web API 项目,该项目使用包装器来生成一致的响应。经过一番搜索,我发现团队遵循了文章“管理异常和一致响应的自定义包装器”中的实现。
这按预期工作。现在我们计划升级到 ASP.NET Core 3.1。升级后,这不能按预期工作。我认为这是由于 ASP.NET Core 2.2 和 3.1 之间的重大变化。我按照 Microsoft 的Migrate from ASP.NET Core 2.2 to 3.0指南修复了所有这些问题。
现在我来自 API 的 JSON 响应中断了。
这是响应成功时执行的代码:
private static Task HandleSuccessRequestAsync(HttpContext context, object body, int code)
{
context.Response.ContentType = "application/json";
string jsonString, bodyText = string.Empty;
APIResponse apiResponse = null;
if (!body.ToString().IsValidJson())
bodyText = JsonConvert.SerializeObject(body);
else
bodyText = body.ToString();
dynamic bodyContent = JsonConvert.DeserializeObject<dynamic>(bodyText);
Type type;
type = bodyContent?.GetType();
if (type.Equals(typeof(Newtonsoft.Json.Linq.JObject)))
{
apiResponse = JsonConvert.DeserializeObject<APIResponse>(bodyText); …Run Code Online (Sandbox Code Playgroud)