У меня есть решение Visual Studio с двумя проектами;API и MVC.MVC - это мой MVC-проект, содержащий мои представления и т. Д., API - это мой API-проект, содержащий API-конечные точки и логику.Поскольку у меня есть два проекта, я настроил в своем решении несколько проектов запуска.
HttpClient
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 Controller (обратите внимание: моя точка останова в этом методе никогда не достигает)
[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