从Web项目调用API项目时出现OperationCanceledException

时间:2019-02-17 00:16:33

标签: c# visual-studio asp.net-core .net-core

我在使用VS解决方案时遇到了一种奇怪的情况。我有两个.NET Core Web项目,一个是MVC Web,另一个是Web API。

我已将我的解决方案设置为同时运行两个项目,以便Web项目(在端口5002上)可以调用API项目(在端口5001上)。

调用我的API项目的方法非常简单:

public async Task<IEnumerable<Category>> GetCategories()
{
    var apiUri = "http://localhost:5001/api/categories";

    HttpClient client = new HttpClient();
    var requestMessage = new HttpRequestMessage(HttpMethod.Get, apiUri);
    var responseMessage = await client.SendAsync(requestMessage); // fails here

    ...
}

调用SendAsync时,它将挂起几分钟,然后最终抛出一个OperationCanceledException,并显示The operation was canceled和堆栈跟踪

  

OperationCanceledException:操作已取消。

     

System.Net.Http.HttpClient.HandleFinishSendAsyncError(Exception e,CancellationTokenSource cts)

     

System.Net.Http.HttpClient.FinishSendAsyncBuffered(任务sendTask,HttpRequestMessage请求,CancelationTokenSource cts,布尔disposeCts)

     

CategoryService.cs中的MyProj.Web.Services.CategoryService.GetCategories()

     

var responseMessage =等待客户端。SendAsync(requestMessage);

奇怪的是,我可以在我的API上导航到Swagger并且端点正常工作。另外,如果我在Postman中使用该确切的API端点发出GET请求,它也可以正常工作。

我在这里做错什么了吗?我怀疑这可能是我的项目的本地Visual Studio设置问题-在另一台机器上运行正常,但是今天我将其拉到另一台机器上,突然我无法调用我的API项目。


我还尝试创建一个空白的控制台应用程序来调用我的API项目 结果相似,这次我得到了TaskCanceledException。但是同样,在我的API项目中使用Swagger或Postman也可以。

0 个答案:

没有答案