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

ASP.NET Core应用连接本地Docker OpenSearch遇连接拒绝及SSL错误

问题解决配置要点

1. 修正连接协议与地址

官方默认docker-compose启动的OpenSearch默认启用HTTPS,9200是HTTPS端口,你之前用http://localhost:9200会导致HTTP请求发送到HTTPS端口,触发NotSslRecordException错误。修改appsettings.json:

"OpenSearch": {
  "Uri": "https://localhost:9200",
  "Username": "admin",
  "Password": "admin"
}

如果你的ASP.NET Core应用也通过Docker部署,不要用localhost,改用docker-compose中OpenSearch服务的默认名称opensearch-node1作为地址:

"Uri": "https://opensearch-node1:9200"

2. 禁用自签名证书验证(开发环境)

本地OpenSearch使用自签名证书,ASP.NET Core默认会拒绝该证书,导致连接异常。在创建OpenSearchClient时添加禁用SSL验证的配置:

var config = configuration.GetSection("OpenSearch");
var settings = new ConnectionSettings(new Uri(config["Uri"]))
    .BasicAuthentication(config["Username"], config["Password"])
    .DisableSslVerification() // 仅开发环境使用,生产环境需配置信任证书
    .EnableDebugMode(); // 可选,用于调试请求细节

var client = new OpenSearchClient(settings);

3. 统一Docker网络(应用在Docker中时)

如果你的ASP.NET Core应用也运行在Docker容器内,需确保它和OpenSearch容器在同一网络中。查看你的docker-compose.yml,OpenSearch默认会创建opensearch-net网络,将应用服务加入该网络:

services:
  your-aspnet-app:
    build: .
    networks:
      - opensearch-net
    ports:
      - "5000:5000"
  opensearch-node1:
    image: opensearchproject/opensearch:latest
    networks:
      - opensearch-net
    # 其他OpenSearch配置...
networks:
  opensearch-net:
    driver: bridge

4. 先验证OpenSearch服务可用性

用curl命令先确认本地OpenSearch服务正常响应:

curl -X GET https://localhost:9200 -u admin:admin --insecure

如果返回节点信息,说明服务本身无问题,再聚焦应用端配置修正。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:22:32