by Guest » 27 Jan 2025, 03:40
Ich erstelle eine eigenständige Anwendung, die sich in ein anderes Projekt einbindet, um Elemente einzureichen, die letztendlich in eine Datenbank eingefügt werden Anruf). Wenn ich den betreffenden Befehl über Mediatr aufrufe, erhalte ich den folgenden Fehler: < /p>
Es kann den Dienst für Typ
'microsoft.extensions nicht beheben. Protokollierung.ilogger
2[SubmitItemCommand,SubmitItemCommandResponse]]'
beim Versuch,
'TransactionBehavior`2[SubmitItemCommand,SubmitItemCommandResponse]' zu aktivieren.
Ich habe eine Start-up-Klasse in meiner Bewerbung, die so aussieht:
Code: Select all
public ServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddMediatR(typeof(Startup));
services.AddTransient(typeof(IPipelineBehavior), typeof(TransactionBehavior));
...
return services.BuildServiceProvider();
}
und der betreffende Befehl ist unten:
Code: Select all
public class TransactionBehavior : IPipelineBehavior where TRequest : Command
{
private readonly ILogger _logger;
public TransactionBehavior(ILogger logger)
{
_logger = logger ?? throw new ArgumentException(nameof(logger));
}
public async Task Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate next)
{
try
{
...
}
catch (Exception ex)
{
_logger.LogError(ex, "Error handling transaction for {CommandName} ({@Command})", request.GetType().Name, request);
throw;
}
}
}
< /code>
Ich habe eine Reihe von Lösungen ausprobiert, darunter das Hinzufügen eines Elements zur Dienstekonfiguration für Iloogger. Wenn ich das tue, erhalte ich jedoch den Fehler von: < /p>
< Blockquote>
kann den Implementierungstyp
'microsoft.extensions.logging.ilogger nicht instanziieren1[TransactionBehavior
2[SubmitItemCommand,SubmitItemCommandResponse]]'
für Diensttyp
'Microsoft.Extensions.Logging.ILogger
2[SubmitItemCommand,SubmitItemCommandResponse]]'
.
Ich erstelle eine eigenständige Anwendung, die sich in ein anderes Projekt einbindet, um Elemente einzureichen, die letztendlich in eine Datenbank eingefügt werden Anruf). Wenn ich den betreffenden Befehl über Mediatr aufrufe, erhalte ich den folgenden Fehler: < /p>
Es kann den Dienst für Typ
'microsoft.extensions nicht beheben. Protokollierung.ilogger[code]1[TransactionBehavior[/code]2[SubmitItemCommand,SubmitItemCommandResponse]]'
beim Versuch,
'TransactionBehavior`2[SubmitItemCommand,SubmitItemCommandResponse]' zu aktivieren.
Ich habe eine Start-up-Klasse in meiner Bewerbung, die so aussieht:
[code]public ServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddMediatR(typeof(Startup));
services.AddTransient(typeof(IPipelineBehavior), typeof(TransactionBehavior));
...
return services.BuildServiceProvider();
}
[/code]
und der betreffende Befehl ist unten:
[code]public class TransactionBehavior : IPipelineBehavior where TRequest : Command
{
private readonly ILogger _logger;
public TransactionBehavior(ILogger logger)
{
_logger = logger ?? throw new ArgumentException(nameof(logger));
}
public async Task Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate next)
{
try
{
...
}
catch (Exception ex)
{
_logger.LogError(ex, "Error handling transaction for {CommandName} ({@Command})", request.GetType().Name, request);
throw;
}
}
}
< /code>
Ich habe eine Reihe von Lösungen ausprobiert, darunter das Hinzufügen eines Elements zur Dienstekonfiguration für Iloogger. Wenn ich das tue, erhalte ich jedoch den Fehler von: < /p>
< Blockquote>
kann den Implementierungstyp
'microsoft.extensions.logging.ilogger nicht instanziieren1[TransactionBehavior[/code]2[SubmitItemCommand,SubmitItemCommandResponse]]'
für Diensttyp
'Microsoft.Extensions.Logging.ILogger[code]1[TransactionBehavior[/code]2[SubmitItemCommand,SubmitItemCommandResponse]]'
.