第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

[Asp.net core]使用Polly網(wǎng)絡(luò)請(qǐng)求異常重試

標(biāo)簽:
Html/CSS

摘要

在网络传输过程中,不能保证所有的请求都能正确的被服务端接受或者处理,那么进行简单的重试可以进行简单的补救。比如现在大部分支付功能,在支付成功之后,需要回调我们网站的接口,并且要求我们的接口给一个类似成功的响应,支付端收到我们的成功响应,就不再进行重试请求了。

比如:支付宝文档中有这么一段描述

Polly简单实用

复制代码

        private ILog _log;        /// <summary>        /// 重试时间点        /// </summary>        private TimeSpan[] _retryTimes = new[] {            TimeSpan.FromSeconds(1),            TimeSpan.FromSeconds(5),            TimeSpan.FromSeconds(10),            TimeSpan.FromSeconds(20),            TimeSpan.FromMinutes(1)        };        /// <summary>        /// 提交文本        /// </summary>        /// <param name="url"></param>        /// <param name="data"></param>        /// <returns></returns>        public string PostTxt(string url, Dictionary<string, string> paras)        {            try            {
                     string data = ConvertDic2QueryString(paras);                     byte[] byteArray = Encoding.UTF8.GetBytes(data);
                var retry4TimePolicy = Polly.Policy.Handle<WebException>().WaitAndRetry(                  _retryTimes,                          (ex, ts, i, context) =>                          {                              _log.Info(new LogModel                              {                                  Content = $"Request:{url},data:{ConvertDic2QueryString(paras)},第{i}次重试",                                  userId= "",                                  Op = "posttxt"                              });                          });                return retry4TimePolicy.Execute(() =>                 {                                        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);                     request.ContentType = "application/x-www-form-urlencoded";                     request.Method = "POST";                     request.ContentLength = byteArray.Length;                     request.Timeout = 60000;                     if (url.StartsWith("https"))                     {                         request.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;                     }                     Stream requestStream = request.GetRequestStream();                     requestStream.Write(byteArray, 0, byteArray.Length);                     HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse();                     StreamReader reader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8);                     String sResult = reader.ReadToEnd();                     requestStream.Close();                     reader.Close();                     webResponse.Close();                     return sResult;                 });            }            catch (WebException ex)            {                throw ex;            }                   }

复制代码复制代码

  public string ConvertDic2QueryString(Dictionary<string, string> dic)        {            if (dic == null)            {                return string.Empty;            }            StringBuilder sb = new StringBuilder();            foreach (var key in dic.Keys)            {                sb.AppendFormat("{0}={1}&", key, HttpUtility.UrlEncode(dic[key]));            }            return sb.ToString().TrimEnd('&');        }

复制代码

可以类似上面的一种请求,在捕获到webException异常时,立马重试一次,检查网络是否正常,如果仍不能正确进行请求,下次5s,10s,20s,进行尝试,如果仍不正常,则在1分钟后进行最后尝试。否则认为网络不正常,则抛出异常,进行日志记录。

 总结

Polly支持多种重试策略,感兴趣的可以移步这里。

https://www.cnblogs.com/CreateMyself/p/7589397.html

http://www.cnblogs.com/xishuai/p/asp-net-core-polly.html

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消