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] =].
我在 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] =].