.NET Core 3.1:无法连接,因为目标机器主动拒绝

问题描述 投票:0回答:1

我正在处理 .net core Web 应用程序代码挑战,但收到以下错误:

处理请求时发生未处理的异常。 SocketException:无法建立连接,因为目标 机器主动拒绝了。 System.Net.Http.ConnectHelper.ConnectAsync(字符串主机,int端口, CancellationToken(取消令牌)

代码位于 此存储库

此方法发生错误:

public async Task<TeamDTO> AddTeam(string teamName)
{
    var client = _httpClientFactory.CreateClient();
    client.BaseAddress = new Uri(_baseUri);
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    var team = new TeamDTO { Name = teamName };
    var response = await client.PostAsync("teams", new StringContent(JsonSerializer.Serialize(team), Encoding.UTF8, "application/json"));
    response.EnsureSuccessStatusCode();
    var responseBody = await response.Content.ReadAsStringAsync();
    return JsonSerializer.Deserialize<TeamDTO>(responseBody, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
}

在这行代码上:

var response = await client.PostAsync("teams", new StringContent(JsonSerializer.Serialize(team), Encoding.UTF8, "application/json"));

我正在尝试连接到此 API 方法:

    [HttpPost("Post")]
    public virtual ActionResult<GameDTO> Post(GameDTO gameDTO)
    {
        var game = new Game
        {
            HomeTeamId = gameDTO.HomeTeamId,
            AwayTeamId = gameDTO.AwayTeamId,
            Date = gameDTO.Date,
            WinningTeamId = gameDTO.WinningTeamId
        };
        game.Id = Repository.Insert(game);

        return Ok(gameDTO);
    }

我在 Windows 11 专业版上运行 VS 2022。我正在使用 IIS Express 并从同一 VS 2022 解决方案启动这两个应用程序。 我已经彻底测试了 API 代码(有单元测试)并且它可以工作。 API 和 Web 应用程序均启动。 一切正常,直到我在网络应用程序的游戏视图中单击“添加团队”,然后点击上面显示的代码等。我相信这是一个配置问题。

c# asp.net-core-mvc asp.net-core-webapi .net-core-3.1
1个回答
0
投票

我正在使用 IIS Express 并从同一个启动两个应用程序 VS 2022 解决方案。我已经彻底测试了(有单元测试) API 代码并且它可以工作。 API 和 Web 应用程序均启动

你说你使用的是IIS Express,但是httpclient的基本uri端口是kestrel的默认端口;

"ApiSettings": { "BaseUri": "localhost:5000" },

 _baseUri = configuration["ApiSettings:BaseUri"];

修改5000为你的api项目的端口

© www.soinside.com 2019 - 2024. All rights reserved.