RefreshToken 过期后请求挂起 JsonHttpClient ServiceStack

Request hangs after RefreshToken expires JsonHttpClient ServiceStack

我在 Xamarin.Forms 移动应用程序中使用 ServiceStack JsonHttpClient 客户端 (5.9.0)。

客户端设置如下:

client = new JsonHttpClient(App.BaseEndpoint)
{
   RefreshToken = RefreshToken,
};

var httpClient = client.GetHttpClient();
httpClient.Timeout = new TimeSpan(0, timeout, 0);

不记名令牌的刷新工作完美,但刷新令牌过期后请求只是挂起,没有任何响应,也没有任何异常。

这里是请求示例:

public async Task GetAsync(string uri)
{
   try
   {
      var response = await client.GetAsync<string>(uri);
   }
   catch (RefreshTokenException ex)
   {
      throw new SessionExpiredException(AppResources.Error_SessionExpired);
   }
 }

如果我改为使用 JsonServiceClient - 在 RefreshToken 过期后,我会按预期收到 RefreshTokenException

也许有人对此有一些修复或解决方法。谢谢

我重写了 JsonHttpClient 手动任务延续以在 this commit 中使用 async/await,这应该在 Xamarin 中使用经过更好测试的代码路径。

此更改可从现在 available on MyGet 的最新 ServiceStack v5.9.1 获得。

如果问题仍然存在,您可以尝试将 JsonHttpClient 配置为使用 Xamarin's native HttpClient implementations 对 iOS 使用 NSUrlSessionHandler,对 Android 使用 [=13] =].