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

.NET 6项目无法连接Solr 8.9 连接地址分配失败求助

.NET 6.0 项目无法连接 Solr 8.9 求助

Program.cs

...

builder.Services.AddSolrNet<MySolrModel>("http://localhost:8983/solr/fast").BuildServiceProvider();

builder.Services.AddHttpContextAccessor();

// Add transients
builder.Services.AddTransient<UserService>();
builder.Services.AddTransient<SolrService>();
builder.Services.AddTransient<MessageService>();
builder.Services.AddTransient<FeedbackService>();
builder.Services.AddTransient<DashboardService>();
builder.Services.AddTransient<ManagementService>();
builder.Services.AddTransient<Others>();
...

Others.cs

public class Others
{
    private readonly ISolrOperations<MySolrModel> _solr;

    public Others(ISolrOperations<MySolrModel> solr)
    {
        _solr = solr;
    }

    /// <summary>
    /// 检查与Apache Solr服务器的连接状态
    /// </summary>
    /// <returns>连接成功返回True,失败返回False</returns>
    public bool CheckSolrConnection()
    {
        try
        {
            // 发送ping请求验证连接
            _solr.Ping();

            return true;
        }
        catch (Exception ex)
        {
            Console.WriteLine($"连接Solr出错: {ex.Message}");
            return false;
        }
    }
}

SolrService.cs(自定义)

...
/// <summary>
/// 向Solr服务器发起查询请求
/// </summary>
/// <param name="searchString">Solr查询语句</param>
/// <returns>查询结果列表</returns>
public async Task<List<MySolrModel>> Search(string searchString)
{
    if (searchString.Equals("*:*"))
    {
        var results = await _solr.QueryAsync(SolrQuery.All);
        return results;
    }
    else
    {
        var results = await _solr.QueryAsync(searchString);
        return results;
    }
}
...

服务器端错误信息

Exception thrown: 'SolrNet.Exceptions.SolrConnectionException' in SolrNet.dll
Error while connecting to Solr: Cannot assign requested address [::1]:8983 (localhost:8983)

*AND*

System.InvalidOperationException: The exception handler configured on ExceptionHandlerOptions produced a 404 status response. This InvalidOperationException containing the original exception was thrown since this is often due to a misconfigured ExceptionHandlingPath. If the exception handler is expected to return 404 status responses then set AllowStatusCode404Response to true.
 ---&gt; System.Net.Http.HttpRequestException: Cannot assign requested address (localhost:8983)
 ---&gt; System.Net.Sockets.SocketException (99): Cannot assign requested address
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
   at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|277_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(HttpRequestMessage request)
   at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
   at SolrNet.Impl.AutoSolrConnection.GetAsStreamAsync(String relativeUrl, IEnumerable`1 parameters, CancellationToken cancellationToken)
   at SolrNet.Impl.SolrQueryExecuter`1.ExecuteAsync(ISolrQuery q, QueryOptions options, CancellationToken cancellationToken)
   at ChatbotManagement.Controllers.Services.API.SolrService.Search(String searchString) in D:\Faculdade\3-Ano\Trabalhos\PF\chatbot\ChatbotManagement\Controllers\Services\API\SolrService.cs:line 207
   at ChatbotManagement.Controllers.DashboardController.UpdateDB() in D:\Faculdade\3-Ano\Trabalhos\PF\chatbot\ChatbotManagement\Controllers\DashboardController.cs:line 63
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
   --- End of inner exception stack trace ---
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.HandleException(HttpContext context, ExceptionDispatchInfo edi)
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

补充说明

  • 使用Postman执行ping和查询操作均成功
  • 已在杀毒软件中添加该项目的例外规则
  • 尝试过多种配置方式,均未解决问题
  • 可按需提供更多相关信息
  • 连接测试时Solr服务器处于运行状态,且确认连接地址正确
  • 当前使用Docker环境,但Solr部署在本地机器而非Docker容器中

已尝试的配置修改

将原有代码:

builder.Services.AddSolrNet<MySolrModel>("https://localhost:8983/solr/#/ChatbotFiles");

替换为:

builder.Services.AddLogging(configure => configure.AddConsole()).AddSolrNet<MySolrModel>("https://localhost:8983/solr/#/ChatbotFiles").BuildServiceProvider();

内容的提问来源于stack exchange,提问作者c.r.t b.r

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:08:10