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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何從mvc中的異步方法重定向到頁(yè)面

如何從mvc中的異步方法重定向到頁(yè)面

C#
jeck貓 2023-07-09 17:55:24
當(dāng) API 響應(yīng)時(shí)間較長(zhǎng)(例如 60 秒)時(shí),我想重定向到“ https://www.mydomain/Timeout ”之類的錯(cuò)誤頁(yè)面。從 API 獲取響應(yīng)的邏輯是在同一 VS 解決方案中 ServiceLayer 項(xiàng)目中的異步方法中編寫(xiě)的。該異步方法正在非異步控制器中調(diào)用(存在于同一 VS 解決方案的 Web 項(xiàng)目中)。當(dāng)我檢查異步方法中的時(shí)間并在此基礎(chǔ)上在控制器中執(zhí)行 Response.Redirect 時(shí),它就可以工作了。但是,我想在異步方法中執(zhí)行此操作,因?yàn)檫@是由大約 50 個(gè) API 調(diào)用的方法。因此,我不想在每個(gè)控制器中執(zhí)行 Response.Redirect,而是想從這里處理它,以便它適用于每個(gè) API?,F(xiàn)在請(qǐng)幫我看看該怎么做?我嘗試將 Response.Redirect(" https://www.mydomain/timeout ") 放入異步方法中,但這不起作用。我也嘗試過(guò) Server.Transfer 但沒(méi)有運(yùn)氣。這是由于異步方法造成的嗎?下面是用異步方法編寫(xiě)的從 API 獲取響應(yīng)的代碼。private async Task<T1> PostA<T1,T2>(string method, T2 request, string api,            bool isPut){  Stopwatch sw = new Stopwatch();  sw.Start();        var response = isPut ?                await client.PutAsync(parturl,                  body).ConfigureAwait(continueOnCapturedContext: false) :               await client.PostAsync(parturl,                  body).ConfigureAwait(continueOnCapturedContext: false);  sw.Stop();  long elapsedTime = sw.ElapsedMilliseconds;  if (elapsedTime >= 60000)  {     Response.Redirect("https://www.mydomain/timeout")  }}在該方法中,我僅向您展示了所需的代碼,其余邏輯已被刪除。
查看完整描述

1 回答

?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

我如何根據(jù)上述評(píng)論遵循該方法:

  1. Dictionary<string, bool> d= new Dictionary<string, bool>();我在編寫(xiě) API 調(diào)用方法的類中創(chuàng)建了一個(gè)靜態(tài)字典,例如,MyApiClass

  2. 我將代碼行client.timeout= [your time here in milliseconds]; 用于 API 發(fā)送請(qǐng)求。

  3. 當(dāng) API 超時(shí)時(shí),它會(huì)拋出異常TaskTimeoutException,因此我捕獲了異常并將代碼放入 catch 塊中,如下所示d.Add("timeout", true);

  4. 我創(chuàng)建了自定義操作過(guò)濾器并應(yīng)用了以下代碼:

    public class CustomActionFilter : ActionFilterAttribute{
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {        if(MyApiClass.d.ContainsKey("timeout") && d["timeout"])
            {
                        throw new Exception();
            }
        }
    }
  5. 我把它應(yīng)用[CustomActionFilter]到了動(dòng)作上。

  6. 當(dāng)執(zhí)行操作并輸入自定義過(guò)濾器時(shí),它會(huì)通過(guò)檢查字典條目拋出異?!,F(xiàn)在,我們Application_Error()Global.asax.cs中捕獲了異常。

  7. Application_Error()我們編寫(xiě)了重定向到所需頁(yè)面的代碼。

注意:在步驟 4 中,您可以創(chuàng)建自定義異常以提供更精確的日志記錄詳細(xì)信息。


    查看完整回答
    反對(duì) 回復(fù) 2023-07-09
    • 1 回答
    • 0 關(guān)注
    • 143 瀏覽

    添加回答

    舉報(bào)

    0/150
    提交
    取消
    微信客服

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

    幫助反饋 APP下載

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

    公眾號(hào)

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