C# DelegatingHandler 再次调用 Task

问题描述

这是我的委托处理程序代码

   public class MyHandler: DelegatingHandler
    {
        public MyHandler(HttpMessageHandler innerHandler) : base(innerHandler) { }
        public IDataStore<Object> DataStore => DependencyService.Get<IDataStore<Object>>();
        protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)
        {

            HttpResponseMessage response = new HttpResponseMessage();

            response = await base.SendAsync(request,cancellationToken);
            int status_code = (int)response.StatusCode;
            if (response.IsSuccessstatusCode)
            {
                return response;
            }
            else if (status_code == 401 || status_code == 403)
            {
                try
                {
                    var response_token = await DataStore.Updatetoken();
                    if (response_token)
                    {
                     response = await base.SendAsync(request,cancellationToken);
                    }
                    else
                    {
                        await Application.Current.MainPage.displayAlert("",AppResources.SERVER_ERROR,AppResources.BTNOK);
                        await Application.Current.MainPage.Navigation.PushAsync(new MainMenu());
                    }

                }
                catch (AggregateException ae)
                {
                    foreach (Exception e in ae.InnerExceptions)
                    {
                        if (e is TaskCanceledException)
                            Console.WriteLine("Unable to compute mean: {0}",((TaskCanceledException)e).Message);
                        else
                            Console.WriteLine("Exception: " + e.GetType().Name);
                    }
                }
                finally
                {

                }
            }
            return response;
        }
    }

当我通过更新令牌获得真实信息时,我需要调用一个未经授权的 async Task在这种情况下,我在 public async Task<Patient> PatientValidation 上获得 401 状态,但还有更多任务可以生成此状态。所以我只想再次调用一个任务,用户不应该知道发生了这种情况并且他得到了新的令牌。此代码 response = await base.SendAsync(request,cancellationToken); 不能解决我的问题。

知道如何解决这个问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...