微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C# DelegatingHandler 再次调用 Task

如何解决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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?