C# ASP.NET MVC核心-通过HttpClient使用API
我有一个包含两个项目的VisualStudio解决方案;API和MVC。MVC是包含我的视图等的MVC项目,API是包含API端点和逻辑的API项目。因为我有两个项目,所以我将我的解决方案配置为有多个启动项目 HttpClientC# ASP.NET MVC核心-通过HttpClient使用API,c#,asp.net-mvc,api,controller,httpclient,C#,Asp.net Mvc,Api,Controller,Httpclient,我有一个包含两个项目的VisualStudio解决方案;API和MVC。MVC是包含我的视图等的MVC项目,API是包含API端点和逻辑的API项目。因为我有两个项目,所以我将我的解决方案配置为有多个启动项目 HttpClient public const string AuctionAPI = "http://localhost:44337/"; public const string AuctionClient = "http://localhost:44398/"; public sta
public const string AuctionAPI = "http://localhost:44337/";
public const string AuctionClient = "http://localhost:44398/";
public static HttpClient GetClient()
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(AuctionAPI);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
return client;
}
MVC控制器(注意:当我设置HttpResponseMessage并尝试调用client.GetAsync()时,我在第6行收到了错误。
我收到的实际错误
IOException:无法从传输连接读取数据
此错误表示目标计算机可以访问,但您尝试访问的服务无法访问
通过查看您共享的代码,我注意到一件事。如果项目设置为使用Https,那么IIS Express将分配从443开始的端口,从而产生443xx这样的端口。
请将http方案更改为https,然后重试
public const string AuctionAPI = "http://localhost:44337/";
到
或 将项目设置更改为不使用SSL
此问题也可能与传输级安全性有关。使用IIS Express的同一解决方案中的两个项目?是否确定在运行第二个(MVC)时第一个(API)正在实际运行?请检查此问题。如果表定义中存在循环引用,也会出现此问题。请尝试禁用延迟加载和代理创建(假设使用EF Core)。@sellotape是的,问题已在答案中正确识别。感谢您尝试help@D-johnAnshani感谢链接,问题已在下面的答案中确定
[HttpGet("SeeOneItem/{itemNumber:int}")]
public AuctionItem GetAuctionItem(int itemNumber)
{
var item = _auctionItemDataFactory.AuctionItems.First(x => x.ItemNumber == itemNumber);
if (item == null)
{
return null;
}
return _auctionItemDataFactory.AuctionItems.First(x => x.ItemNumber == itemNumber);
}
public const string AuctionAPI = "http://localhost:44337/";
public const string AuctionAPI = "https://localhost:44337/";