C# 使用c在web api方法中同步调用多个web api调用#
我有一个web api,它在内部进行多个web api调用,并在最后返回一个结果。这些多个方法的执行时间不同,因此我的函数中出现超时异常 例如: DeleteAccount是我的web api方法,它调用另一个web api方法DeleteExistingAccount。此DeleteExistingAccount有多个方法调用,例如method1、method2、method3、method4。由于这些都是异步执行的,所以我的deleteCount方法中出现超时错误 如何实现method1、method2、method3、method4一个接一个地同步执行C# 使用c在web api方法中同步调用多个web api调用#,c#,.net,asp.net-web-api,synchronous,C#,.net,Asp.net Web Api,Synchronous,我有一个web api,它在内部进行多个web api调用,并在最后返回一个结果。这些多个方法的执行时间不同,因此我的函数中出现超时异常 例如: DeleteAccount是我的web api方法,它调用另一个web api方法DeleteExistingAccount。此DeleteExistingAccount有多个方法调用,例如method1、method2、method3、method4。由于这些都是异步执行的,所以我的deleteCount方法中出现超时错误 如何实现method1、m
/////This is my web api method
public IHttpActionResult DeleteAccount([FromUri] string acctId, [FromUri] string email = "")
{
if (PicUpHelper.IsValidUserRequest())
{
string baseUrl = System.Configuration.ConfigurationManager.AppSettings["APIURL"].ToString();
string url = string.Format("/api/deleteaccount/{0}", acctId);
var clientRequest = new RestClient(baseUrl);
var request = new RestRequest(url, Method.DELETE);
IRestResponse response = clientRequest.Execute(request);
//// When I look at the response I have the timeout here
var content = response.Content; // raw content
dynamic data = JsonConvert.DeserializeObject(content);
}
}
///My web api method will invoke this web api method
public WebApiResultEx<string, string> DeleteAccount([FromUri] string acctId, [FromUri] string email = "")
{
WebApiResultEx<string, string> oDelAcctRes = new WebApiResultEx<string, string>();
Account oAccountInfo = new Account();
MyDbContext DbCtxt = new MyDbContext();
AccountAPIController oAccountAPIController = new AccountAPIController();
var oAcctInfo = oPlatAccountAPIController.Get(acctId);
if (!oAcctInfo.HasError > 0)
{
oAcctInfo = (Models.Api.Account)(object)oAcctInfo.Data;
//second method
oRes = oAccountAPIController.DeleteAcct(acctId);
}
return oRes;
}
///这是我的web api方法
public IHttpActionResult deleteCount([FromUri]string acctId,[FromUri]string email=”“)
{
if(picupulper.IsValidUserRequest())
{
字符串baseUrl=System.Configuration.ConfigurationManager.AppSettings[“APIURL”].ToString();
字符串url=string.Format(“/api/deleteCount/{0}”,acctId);
var clientRequest=新的RestClient(baseUrl);
var请求=新的重新请求(url,Method.DELETE);
IRestResponse response=clientRequest.Execute(请求);
////当我查看响应时,这里有超时
var content=response.content;//原始内容
动态数据=JsonConvert.DeserializeObject(内容);
}
}
///我的web api方法将调用此web api方法
public WebApiResultEx DeleteAccount([FromUri]string acctId,[FromUri]string email=”“)
{
WebApiResultEx oDelAcctRes=新的WebApiResultEx();
账户oAccountInfo=新账户();
MyDbContext DbCtxt=新的MyDbContext();
AccountApicController OACCountApicController=新AccountApicController();
var oAcctInfo=oPlatAccountAPIController.Get(acctId);
如果(!oAcctInfo.HasError>0)
{
oAcctInfo=(Models.Api.Account)(object)oAcctInfo.Data;
//第二种方法
oRes=oAccountAPIController.DeleteAcct(acctId);
}
返矿;
}
谢谢
塔拉克可能是重复的你能展示一下你正在使用的密码吗?@gabriel我已经把密码放好了你能看一下并告诉我我要去哪里吗好的,有几件事,1。为什么调用不同的控制器操作?我建议将控制器中的代码抽象为服务类,然后调用这些方法,而不是直接调用控制器。这使得重用代码变得更容易。2.您得到的确切错误消息是什么?3.这些方法需要多长时间才能执行?@gabriel,DeleteAccount是我们在项目中包含的所有者代码,我们无法合并控制器。但是,我们可以找到解决方案并向客户提出建议。他们将更新控制器并重新发送回。