Blazor客户端无法将HttpService注入到LoggerProvider中,导致应用程序冻结。
创始人
2024-12-21 11:00:07
0

在Blazor客户端应用程序中,将HttpService注入到LoggerProvider中可能会导致死锁(deadlock),因为HttpClient默认使用异步线程处理请求,而LoggerProvider可能会在主线程上下文中运行。为了解决这个问题,可以手动创建一个新的传输对象并在其中注入HttpService,然后将传输对象传递给LoggerProvider。以下是示例代码:

  1. 创建传输对象

public class CustomHttpMessageHandler : HttpClientHandler { public CustomHttpMessageHandler() : base() { // 设置相关请求配置 }

protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
    var contentType = request.Content?.Headers?.ContentType?.MediaType ?? "";
    if (contentType.Contains("application/json"))
    {
        // 对request进行处理
    }
    return base.SendAsync(request, cancellationToken);
}

}

  1. 注入HttpService

services.AddScoped(); services.AddScoped(sp => new CustomHttpClient( new HttpClient(new CustomHttpMessageHandler()) { BaseAddress = new Uri(configuration["BackendUrl"]) }));

  1. 将传输对象传递给LoggerProvider

services.AddSingleton(sp => new CustomLoggerProvider(sp.GetRequiredService()));

  1. 自定义LoggerProvider

public class CustomLoggerProvider : ILoggerProvider { private readonly HttpClient _httpClient;

public CustomLoggerProvider(CustomHttpClient httpClient)
{
    _httpClient = httpClient;
}

public ILogger CreateLogger(string categoryName)
{
    return new CustomLogger(_httpClient);
}

public void Dispose()
{
    // 清理资源
}

}

现在,CustomHttpClient可以使用HttpService进行注入,避免了死锁问题。如果需要调用Api请求,可以在CustomLogger类中调用CustomHttpClient以获取响应。

相关内容

热门资讯

透视透视挂!wpk软件是真的吗... 透视透视挂!wpk软件是真的吗,(WPK德州局)辅助软件(原来是有挂)1、首先打开wpk软件是真的吗...
透视ai!wpk有作弊吗,(w... 透视ai!wpk有作弊吗,(wPK模拟器)安卓下载辅助(竟然是真的有挂);1、wpk有作弊吗ai辅助...
透视好友!wpk辅助器,(wP... 透视好友!wpk辅助器,(wPk免费)辅助器(切实真的是有挂)1、全新机制【wpk辅助器软件透明挂】...
透视脚本!wpk辅助哪里买,(... 透视脚本!wpk辅助哪里买,(Wpk方法)竟然真的有挂(详细免费辅助)wpk辅助哪里买软件透明挂微扑...
透视有挂!wpk免费辅助,(w... 透视有挂!wpk免费辅助,(wpK免费)都是存在有挂(详细透视辅助)1、透视有挂!wpk免费辅助,(...
透视代打!wpk透视工作室,(... 透视代打!wpk透视工作室,(Wpk软件)真是是真的有挂(详细私人辅助);wpk透视工作室辅助器中分...
透视玄学!wpk免费辅助,(W... 透视玄学!wpk免费辅助,(WPk模拟器)官网下载链接(果然真的是有挂);1、任何wpk免费辅助ai...
透视美元局!wpk作弊,(wp... 透视美元局!wpk作弊,(wpK私人局)微扑克微乐辅助(都是是真的有挂)1、微扑克微乐辅助ai机器人...
透视玄学!wpk俱乐部怎么作弊... 透视玄学!wpk俱乐部怎么作弊,(WpK辅助)透视是真的假的(果然存在有挂)wpk俱乐部怎么作弊辅助...
透视黑科技!wpk真吗,(Wp... 透视黑科技!wpk真吗,(Wpk插件)免费辅助(都是真的有挂)1.wpk真吗 ai辅助创建新账号,点...