.net MAUI 应用程序在从 http 请求反序列化数据时在发布模式下崩溃

问题描述 投票:0回答:1

我有一个用 .net MAUI 编写的应用程序。该应用程序使用无密码身份验证。以下体验是通过运行Android的模拟器完成的。

流程如下:

  • 用户输入电子邮件地址并设置登录
  • 向 Web api 发出登录请求,并向用户发送授权码
  • 用户在应用程序中输入授权码
  • 向 Web API 发出请求以验证所提供的详细信息。我接受回复并进行相应处理

在最后一步,我收到以下异常(我使用 Sentry 在我的 .net MAUI 应用程序中进行错误处理)

System.Text.Json.JsonReaderException: ExpectedStartOfValueNotFound, 0x1F LineNumber: 0 | BytePositionInLine: 0.
  ?, in void ThrowHelper.ThrowJsonReaderException(ref Utf8JsonReader, ExceptionResource, byte, ReadOnlySpan<byte>)
  ?, in bool Utf8JsonReader.ConsumeValue(byte)
  ?, in bool Utf8JsonReader.ReadFirstToken(byte)
  ?, in bool Utf8JsonReader.ReadSingleSegment()
  ?, in bool Utf8JsonReader.Read()

当我在调试模式下运行应用程序时,它每次都能正常工作。当我在发布模式下运行此应用程序时,应用程序崩溃了。

我知道该请求返回数据,因为我可以在 Postman 中模拟相同的请求。

我哪里出了问题,下一步该怎么做?

android .net maui
1个回答
0
投票

在原始请求上我没有处理响应内容,而是使用http响应代码来处理后续步骤。这表明问题在于使用的 system.text.json 库试图获取返回的内容并进行处理,尽管为什么它会在调试模式下工作而不是发布?即使我解决了问题,这仍然没有意义。

通过邮递员后,来自 Web API 的响应正在使用 gzip 压缩,而我没有使用我的 httpclient 实例来处理它。我添加了一个处理程序(下面的代码),将其添加到 httpclient 实例,一切都重新开始工作。

var httpClientHandler = new HttpClientHandler()
{
    AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
};

我希望这可以帮助遇到同样挑战的人。

© www.soinside.com 2019 - 2024. All rights reserved.