如何在blazor中实现登录
我正在使用Blazor(3.1)服务器方法
我想记录一些事件(到文件中)
我已经尝试了以下扩展名:https://github.com/BlazorExtensions/Logging,但我无法按照它说的那样使用。
有人可以指出我的工作范例吗?或者告诉我我做错了什么(我通过这种方法遇到此错误:
检测到类型为'Microsoft.JSInterop.IJSRuntime'的服务的循环依赖关系
答案 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 loggers,third party loggers和仅logging in general的信息。
答案 2 :(得分:0)