请求在 RefreshToken 过期后挂起 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手动任务延续,以在此提交中使用 async/await,这应该在 Xamarin 中使用经过更好测试的代码路径。

此更改可从最新的 ServiceStack v5.9.1 获得,该版本现已在 MyGet 上提供。

如果这仍然是一个问题,您可以尝试将JsonHttpClient配置为使用NSUrlSessionHandler的 iOS 和 Android 使用AndroidClientHandler的 Xamarin 本机 HttpClient 实现。

最新更新