You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core连接localhost API遇Connection refused错误求助

ASP.NET Core连接本地API时出现「Connection refused」错误排查

错误信息

System.Net.Http.HttpRequestException: Connection refused. (localhost:7146)

补充说明

项目需求是给Category表添加新数据。在给CategoryController1.cs添加HttpGet和HttpPost操作之前,应用可正常运行:按Ctrl+F5启动后,能从Index.cshtml页面通过Ctrl+Shift+W导航到设计页面。但添加完这些操作后,直接从Index.cshtml运行应用时,在以下位置报错:

SignalRWebUI.Controllers.CategoryController1.Index() in CategoryController1.cs + var responseMessage = await client.GetAsync("https://localhost:7146/api/Category");

相关代码片段

1. CategoryController1.cs

public class CategoryController1 : Controller
{
    private readonly IHttpClientFactory _httpClientFactory;

    public CategoryController1(IHttpClientFactory httpClientFactory)
    {
        _httpClientFactory = httpClientFactory;
    }

    public async Task<IActionResult> Index()
    {
        var client = _httpClientFactory.CreateClient();
        var responseMessage = await client.GetAsync("https://localhost:7146/api/Category");
        if(responseMessage.IsSuccessStatusCode) 
        {
            var jsonData=await responseMessage.Content.ReadAsStringAsync();
            var values =JsonConvert.DeserializeObject<List<ResultCategoryDto>>(jsonData);//Verileri çekme için 
            return View(values);
        }
        return View();
    }

    [HttpGet]
    public IActionResult CreateCategory()
    {
        return View();
    }

    [HttpPost]
    public async  Task<IActionResult> CreateCategory(CreateCategoryDto createCategoryDto)
    {
        createCategoryDto.Status = true;
        var client= _httpClientFactory.CreateClient();
        var jsonData = JsonConvert.SerializeObject(createCategoryDto);
        StringContent stringContent = new StringContent(jsonData,Encoding.UTF8,"application/json");
        var responseMessage = await client.PostAsync("https://localhost:7146/api/Category",stringContent);
        if(responseMessage.IsSuccessStatusCode)
        {
            return RedirectToAction("Index");
        }
        return View();
    }
 }

2. Index.cshtml

@model List<SignalRWebUI.Dtos.CategoryDtos.ResultCategoryDto>
@{
    ViewData["Title"] = "Index";
    Layout = "~/Views/AdminLayoutController1/Index.cshtml";
}

<div class="content">
   <div class="container-fluid">
    <h4 class="page-title">Kategori İşlemleri</h4>
    <div class="row">
        <div class="col-md-12">
            <div class="card">
                <div class="card-header">
                    <div class="card-title">Kategori Listesi</div>
                </div>
                <div class="card-body">
                    <div class="card-sub">
                        Kategori ile ilgili işlemleri aşağıdan gerçekleştirebilirsiniz :
                    </div>
                    <table class="table mt-3">
                        <thead>
                            <tr>
                                <th scope="col">#</th>
                                <th scope="col">Kategori Adı</th>
                                <th scope="col">Durum</th>
                                <th scope="col">Sil</th>
                                <th scope="col">Güncelle</th>
                            </tr>
                        </thead>
                        <tbody>
                            @foreach(var item in Model)
                            {
                                <tr>
                                    <td>@item.CategoryID</td>
                                    <td>@item.CategoryName</td>
                                    <td>@item.Status</td>
                                    <td><a href="#" class="btn btn-outline-danger" >Sil</a> </td>
                                    <td><a href="#" class="btn btn-outline-success" >Günelle</a> </td>
                                </tr>
                            }
                        </tbody>
                    </table>
                    <a href="/Category/CreateCategory/" class="btn btn-outline-primary">Yeni Kategori Girişi</a>
                </div>
            </div> 
        </div>
    </div>
</div>

排查与解决步骤

  • 确认API服务已启动:https://localhost:7146/api/Category对应的后端API项目必须先启动运行,否则会触发连接拒绝。直接在浏览器访问该API地址,验证是否能正常返回数据;同时检查API项目的启动配置,确认监听端口确实是7146。
  • 检查端口占用情况:用命令netstat -ano | findstr :7146查看7146端口是否被其他程序占用。若被占用,可关闭占用程序,或修改API项目的监听端口。
  • 验证API路由正确性:确保后端API的Category控制器存在对应的[HttpGet]接口,路由路径/api/Category无拼写错误(包括大小写、路径层级)。
  • 调整项目启动顺序:若WebUI和API是两个独立项目,需先启动API项目,再启动WebUI;也可在解决方案中设置多个启动项目,让两者同时启动。
  • 排查HTTPS证书问题:若API使用HTTPS,需确保WebUI项目信任API的开发证书。可临时改用HTTP地址测试(若API支持),或手动将API证书导入系统信任存储。
  • 优化HttpClient配置:避免硬编码API地址,将地址配置在appsettings.json中;同时检查IHttpClientFactory的配置,确认无超时、代理等影响连接的异常参数。

内容的提问来源于stack exchange,提问作者omertascan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 14:40:23