我有一个包含两个项目的 Visual Studio 解决方案;API 和 MVC。MVC 是包含我的视图等的 MVC 项目,API 是包含 API 端点和逻辑的 API 项目。由于我有两个项目,我已将我的解决方案配置为具有多个启动项目。
客户端
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 控制器(注意:我在第 6 行收到错误,当我设置 HttpResponseMessage 并尝试调用 client.GetAsync()
[Route("item/{itemNumber}")]
public async Task<IActionResult> IndexForItem(int itemNumber)
{
var client = GetClient();
//ERROR: In next line, HttpResponseMessage it tries to call my API controller and fails
HttpResponseMessage response = await client.GetAsync($@"api/Auction/SeeOneItem/{itemNumber}");
if (response.IsSuccessStatusCode)
{
string content = await response.Content.ReadAsStringAsync();
var model = await response.Content.ReadAsAsync<AuctionItemProxy>();
return View(model);
}
else
{
return Content("An error occured.");
}
}
API 控制器(注意:我在此方法中的断点从未命中)
[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);
}
我收到的实际错误
IOException: Unable to read data from the transport connection
此错误意味着目标机器可访问,但您尝试访问的服务不可访问。
通过查看您共享的代码,我注意到一件事。如果项目设置为使用 Https,则 IIS Express 会分配以 443 开头的端口,从而产生类似 443xx 的端口。将您的 http 方案更改为 https 并重试。
public const string AuctionAPI = "http://localhost:44337/";
至
public const string AuctionAPI = "https://localhost:44337/";
或者
将您的项目设置更改为不使用 SSL
此问题也可能与传输级安全有关。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句