我有一个用 .net MAUI 编写的应用程序。该应用程序使用无密码身份验证。以下体验是通过运行Android的模拟器完成的。
流程如下:
在最后一步,我收到以下异常(我使用 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 中模拟相同的请求。
我哪里出了问题,下一步该怎么做?
在原始请求上我没有处理响应内容,而是使用http响应代码来处理后续步骤。这表明问题在于使用的 system.text.json 库试图获取返回的内容并进行处理,尽管为什么它会在调试模式下工作而不是发布?即使我解决了问题,这仍然没有意义。
通过邮递员后,来自 Web API 的响应正在使用 gzip 压缩,而我没有使用我的 httpclient 实例来处理它。我添加了一个处理程序(下面的代码),将其添加到 httpclient 实例,一切都重新开始工作。
var httpClientHandler = new HttpClientHandler()
{
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
};
我希望这可以帮助遇到同样挑战的人。