Как обрабатывать ошибку во время настраиваемой инъекции зависимостиC#

Место общения программистов C#
Anonymous
Как обрабатывать ошибку во время настраиваемой инъекции зависимости

Сообщение Anonymous »

Я применил мультитенантное место для базы данных EF Core, применяя схему настройки на арендатора в моем проекте ASP.net Core Web API.

Код: Выделить всё

// NOTICE: Scoped service for tenant resolution
builder.Services.AddHttpContextAccessor();
builder.Services.AddScoped(sp =>
{
var tenantIdString = sp.GetRequiredService().HttpContext?.Request.Headers["X-Tenant-Id"];
return !string.IsNullOrEmpty(tenantIdString) && Guid.TryParse(tenantIdString, out var tenantId) ? new Tenant { TenantId = tenantId } : null;
});
< /code>
После этого я вводил в срок службы в области срока службы, контекст базы данных с клиентской схемой, сохраненными в таблицах базы данных приложений, например: < /p>
// NOTICE: Scoped service for ClientDbContext resolution
builder.Services.AddScoped(sp =>
{
var configuration = sp.GetRequiredService();
var applicationDbContext = sp.GetRequiredService();
var tenant = sp.GetRequiredService();

if (EF.IsDesignTime)
{
return new ClientDbContext(new DbContextOptions(), configuration);
}

var client = applicationDbContext.Clients.FirstOrDefault(x => x.TenantId == tenant.TenantId);
return new ClientDbContext(configuration, client?.Schema ?? throw new ClientNotDeclaredException());
});
< /code>
Создание клиентских таблиц на схему работает довольно хорошо, но я хочу сделать исключение, когда не выработанный клиент пытается получить доступ к системе. Вот почему есть новый клиент. Apibehavior 
с использованием InvalidModelStaterSponseFactory без успеха.
Objective
Я хочу поймать исключение для рендеринга http 403 forbided http 500. Http status.
Знаете ли вы, как это сделать или иметь идею?

Подробнее здесь: https://stackoverflow.com/questions/797 ... -injection

Вернуться в «C#»