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以获取响应。

相关内容

热门资讯

科普攻略!德普之星辅助器app... 科普攻略!德普之星辅助器app,we poker辅助器,德州论坛(有挂软件)是一款可以让一直输的玩家...
重大科普!佛手在线大菠萝智能辅... 重大科普!佛手在线大菠萝智能辅助器,wepoker作弊辅助,分享教程(有挂软件);原来确实真的有挂(...
一分钟教会你!wepoker怎... 一分钟教会你!wepoker怎么增加运气,epoker透视,切实教程(有挂透视)1、点击下载安装,微...
六分钟了解!hhpoker有辅... 六分钟了解!hhpoker有辅助吗,wepoker国外版透视,扑克教程(有挂技巧)科技教程也叫必备教...
我来教大家!wepoker辅助... 我来教大家!wepoker辅助透视,wepoker免费脚本弱密码,详细教程(有挂透明);wepoke...
记者发布!wpk辅助,德普之星... 记者发布!wpk辅助,德普之星透视辅助软件激活码,解密教程(有挂辅助);亲真的是有正版授权,小编(透...
揭秘攻略!aapoker万能辅... 《揭秘攻略!aapoker万能辅助器,hhpoker真的假的,揭秘教程(有挂教程)》 aapoker...
重大通报!sohoo poke... 自定义sohoo poker辅助器系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用...
三分钟了解!wpk辅助器,hh... 1、三分钟了解!wpk辅助器,hhpoker免费辅助器,必赢教程(有挂神器);详细教程。2、hhpo...
玩家必看攻略!wejoker私... 玩家必看攻略!wejoker私人辅助软件,智星德州可以透视吗,透明挂教程(有挂技巧)关于智星德州可以...