WebApi调腾讯接口无响应是怎么回事,求大神指教。
[HttpPost]
public object GetCardInfo([FromBody]string files)
{
       try
       {
            Credential cred = new Credential
            {
                SecretId = "xxxx",
                SecretKey = "xxxx"
            };
            ClientProfile clientProfile = new ClientProfile();
            HttpProfile httpProfile = new HttpProfile();
            httpProfile.Endpoint = ("ocr.tencentcloudapi.com");
            clientProfile.HttpProfile = httpProfile;
            OcrClient client = new OcrClient(cred, "ap-guangzhou", clientProfile);
            BusinessCardOCRRequest req = new BusinessCardOCRRequest();
            string strParams = "{\"ImageBase64\":\"" + files + "\"}";
            req = BusinessCardOCRRequest.FromJsonString<BusinessCardOCRRequest>(strParams);
               ** BusinessCardOCRResponse resp = client.BusinessCardOCR(req).ConfigureAwait(false).GetAwaiter().GetResult();**
            return AbstractModel.ToJsonString(resp);

        }
        catch (Exception ex)
        {
            APP_Menber.SaveException(ex.ToString(), "GetCardInfo");
            return ex.ToString();
        }
    }

执行到下面句代码时就停了,也不报异常(控制台程序测试又是正常的)
BusinessCardOCRResponse resp = client.BusinessCardOCR(req).ConfigureAwait(false).GetAwaiter().GetResult();

function ssss(_data) {
            console.log(_data.split(',')[1])
            mui.ajax(api_url + "/api/YDLCRM/Card/GetCardInfo", {
                data: {
                    "": _data.split(',')[1] || ''
                },
                type: "post",
                success: function(data) {
                    alert(1)
                    console.log(JSON.stringify(data));
                },
                error: function(ex, ex1, ex2) {
                    alert(2)
                    console.log(JSON.stringify(ex) + JSON.stringify(ex1) + JSON.stringify(ex2));
                }
            })
        }
m0_37894611
XiaoGuaiSs 问题原因是因为腾讯接口都做了异步化处理,而控制台应用不需要同步上下文,因此这种同步方式调用异步接口是没有问题的,会正常返回。 但是在ASP和Windows Forms应用中,通常不是主线程调用,需要同步上下文,当同步调用异步接口时,会发生UI线程被阻塞,从而界面卡死不动。 要解决这个问题,只需要让UI控件的响应方法异步化就可以了。答案来源 https://cloud.tencent.com/developer/article/1395819
10 个月之前 回复

1个回答

看看是不是超时,文字识别是比较慢的。
传一个小一点的图片过去试试看。

m0_37894611
XiaoGuaiSs 回复: 这是请求webapi的代码 function ssss(_data) { console.log(_data.split(',')[1]) mui.ajax(api_url + "/api/YDLCRM/Card/GetCardInfo", { data: { "": _data.split(',')[1] || '' }, type: "post", success: function(data) { alert(1) console.log(JSON.stringify(data)); }, error: function(ex, ex1, ex2) { alert(2) console.log(JSON.stringify(ex) + JSON.stringify(ex1) + JSON.stringify(ex2)); } }) }
10 个月之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复HiDaJing: 检查下配置文件,文件的路径,files参数,无非就是这些地方不同
10 个月之前 回复
m0_37894611
XiaoGuaiSs 谢谢您的回复,我能确认不是这个原因,因为在控制台应用程序测试是成功的。
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐