Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用c在web api方法中同步调用多个web api调用#_C#_.net_Asp.net Web Api_Synchronous - Fatal编程技术网

C# 使用c在web api方法中同步调用多个web api调用#

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

我有一个web api,它在内部进行多个web api调用,并在最后返回一个结果。这些多个方法的执行时间不同,因此我的函数中出现超时异常

例如:

DeleteAccount是我的web api方法,它调用另一个web api方法DeleteExistingAccount。此DeleteExistingAccount有多个方法调用,例如method1、method2、method3、method4。由于这些都是异步执行的,所以我的deleteCount方法中出现超时错误

如何实现method1、method2、method3、method4一个接一个地同步执行

/////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是我们在项目中包含的所有者代码,我们无法合并控制器。但是,我们可以找到解决方案并向客户提出建议。他们将更新控制器并重新发送回。