调用Bitly短链生成异步方法返回WaitingForActivation状态求助
问题原因
你调用async标记的异步方法时没有加await关键字,此时变量shortLink拿到的不是方法返回的短链字符串结果,而是尚未执行完成的Task<string>对象,WaitingForActivation是Task对象等待系统调度执行的默认状态,属于异步编程的正常现象,不是报错。
解决方法
在调用GetShortUrl方法的代码前添加await关键字,等待异步方法执行完成后即可直接拿到返回的字符串结果:
[HttpGet("redirectUser/{PlanId}")] [ValidateModelState] public async Task<IActionResult> sendNotification(Guid PlanId) { var surveylink = "https://chats.landbot.io"; // 添加await关键字等待异步执行完成 var shortLink = await GetShortUrl(surveylink); // 此处补充后续业务逻辑即可 }
额外优化建议
- 不要在
GetShortUrl方法内每次调用都新建HttpClient实例,频繁创建销毁会导致套接字资源耗尽,建议通过依赖注入注入IHttpClientFactory来创建客户端,或者使用静态HttpClient实例复用连接。 - 调用Bitly接口后建议先判断响应状态码是否为成功状态,再读取响应内容,避免接口调用出错时后续逻辑异常。
- 当前
GetShortUrl方法直接返回Bitly接口的完整JSON响应字符串,如果你只需要短链地址,还需要对返回的JSON做反序列化,提取出对应短链字段再使用。
内容的提问来源于stack exchange,提问作者Raneu
相关产品推荐
相关产品推荐

