我在使用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也可以。