【发布时间】:2021-07-09 00:59:39
【问题描述】:
问题来了:什么会阻止这段代码执行这个 http 请求?
设置如下:我正在做一个具有多个 API 的项目,这是在第一个到第二个中调用的一种方法,用于验证信息。该方法理论上应该发出请求,将模型发送到第二个服务,并在此方法结束时返回一些返回的内容。
当使用断点在本地运行两个 API 以查看它们是否被命中时,第二个永远不会被命中,因为在命中 ExecuteAsync() 行的那一刻,它会严重崩溃,然后重新启动第一个 API。我认为我在这里没有做错任何事情,但是即使我将其放入 try/catch 中,它也不会向我抛出任何类型的堆栈跟踪或异常。这是一个已知问题还是我在这里做错了什么?
public async Task<SharkTankValidationResponseModel> CheckIfValidRequest(SharkTankValidationModel requestModel)
{
// Setup rest client
RestClient userRestClient = new RestClient(endpoint + "SharkTank/Validate");
RestRequest userRequest = new RestRequest(Method.POST);
// New request object for body
userRequest.AddJsonBody(requestModel);
// HTTP Request
IRestResponse response = await userRestClient.ExecuteAsync(userRequest);
return JsonConvert.DeserializeObject<SharkTankValidationResponseModel>(response.Content);
}
在顶层,这就是它的名称。模型制作正确,没有问题,我可以在代码硬崩溃之前逐步执行代码,直到执行函数
SharkTankValidationModel model = await makeSharkTankValidationModel(Method.GET, SharkTankConstants.GET_ALL_CLIENT_CATEGORY, null);
SharkTankValidationResponseModel validationModel = await sharkTank.CheckIfValidRequest(model);
Gif 供参考通过调试器运行的步骤和突然崩溃 https://imgur.com/bWSR78h
【问题讨论】:
-
你忘了等待
CheckIfValidRequest吗? -
双重检查,我确实在顶层等待方法,所以这不是问题
-
请分享minimal reproducible example。我的猜测是在调用堆栈中的某个地方你错过了等待。
-
添加了顶级调用。据我所知,它正在被正确等待