首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MudBlazor -显示来自的snackbar

MudBlazor -显示来自的snackbar
EN

Stack Overflow用户
提问于 2022-08-06 14:26:55
回答 1查看 288关注 0票数 0

我有一个HTTP拦截器来捕获网络连接错误:

代码语言:javascript
复制
public class NetworkErrorInterceptor : DelegatingHandler
{
    private readonly ISnackbar snackbar;

    public NetworkErrorInterceptor(ISnackbar snackbar)
    {
        this.snackbar = snackbar;
    }

    protected override async Task<HttpResponseMessage> SendAsync(
        HttpRequestMessage request, 
        CancellationToken cancellationToken)
    {
        // ...

        try
        {
            Console.WriteLine($"Network Interceptor: sending request");
            response = await base.SendAsync(request, cancellationToken);
        }
        catch (HttpRequestException)
        {
            Console.WriteLine($"Network Interceptor: inside catch block");
            snackbar.Add("Network connection error", Severity.Error, config =>
            {
                // ...
            });
        }

        // ...
    }
}

当这个逻辑在组件中时,我可以看到snackbar,但是当我将它移到拦截器时,它就不再工作了。我之所以移动它,是因为它需要应用于所有请求。不过,我可以看到控制台的消息。

迪:

代码语言:javascript
复制
builder.Services.AddScoped<NetworkErrorInterceptor>();
builder.Services
    .AddHttpClient(/* ... */)
    .AddHttpMessageHandler<NetworkErrorInterceptor>();
EN

回答 1

Stack Overflow用户

发布于 2022-08-19 17:38:27

这对我在Grpc拦截器上很有用,但我把两者都作为单点添加.program.cs

代码语言:javascript
复制
        builder.Services.AddSingleton<ISnackbar, SnackbarService>();
        builder.Services.AddSingleton<GrpcStatusInterceptor>();

可能只是DI作用域对Snackbar服务的访问阻碍了您的工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73260605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档