当 API 响应时间较长(例如 60 秒)时,我想重定向到“ https://www.mydomain/Timeout ”之类的错误页面。
从 API 获取响应的逻辑是在同一 VS 解决方案中 ServiceLayer 项目中的异步方法中编写的。
该异步方法正在非异步控制器中调用(存在于同一 VS 解决方案的 Web 项目中)。
当我检查异步方法中的时间并在此基础上在控制器中执行 Response.Redirect 时,它就可以工作了。但是,我想在异步方法中执行此操作,因为这是由大约 50 个 API 调用的方法。因此,我不想在每个控制器中执行 Response.Redirect,而是想从这里处理它,以便它适用于每个 API。
现在请帮我看看该怎么做?
我尝试将 Response.Redirect(" https://www.mydomain/timeout ") 放入异步方法中,但这不起作用。
我也尝试过 Server.Transfer 但没有运气。这是由于异步方法造成的吗?
下面是用异步方法编写的从 API 获取响应的代码。
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")
}
}
在该方法中,我仅向您展示了所需的代码,其余逻辑已被删除。
喵喵时光机
相关分类