如何在blazor中实现登录(服务器端-3.1)

时间:2019-12-12 19:14:27

标签: blazor-server-side

如何在blazor中实现登录

我正在使用Blazor(3.1)服务器方法

我想记录一些事件(到文件中)

我已经尝试了以下扩展名:https://github.com/BlazorExtensions/Logging,但我无法按照它说的那样使用。

有人可以指出我的工作范例吗?或者告诉我我做错了什么(我通过这种方法遇到此错误:

检测到类型为'Microsoft.JSInterop.IJSRuntime'的服务的循环依赖关系

3 个答案:

答案 0 :(得分:1)

现在,由于与IJSRuntime的循环依赖性,似乎Blazor Server-Side应用程序不支持使用Blazor.Extensions.Logging记录。

https://github.com/BlazorExtensions/Logging/issues/44

PHeuter:“ IJSRuntime可能需要记录日志,而记录器需要IJSRuntime进行记录。”

答案 1 :(得分:1)

要为Blazor服务器实现日志记录,您将采用与.NET Core or ASP.NET Core应用程序相同的方法。

即,在Program.cs文件中,您需要修改CreateHostBuilder方法,以诸如以下方式配置记录器

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureLogging(logging =>
        {
            logging.ClearProviders();
            logging.AddConsole();
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

然后您可以使用依赖项注入将ILogger注入到剃须刀组件或整个应用程序的其余部分。

public class AboutModel : PageModel
{
    private readonly ILogger _logger;

    public AboutModel(ILogger<AboutModel> logger)
    {
        _logger = logger;
    }
    public string Message { get; set; }

    public void OnGet()
    {
        Message = $"About page visited at {DateTime.UtcNow.ToLongTimeString()}";
        _logger.LogInformation(Message);
    }
}

请务必查看Microsoft文档,以获取有关built in loggersthird party loggers和仅logging in general的信息。

答案 2 :(得分:0)