IAsyncactionFilter с использованием пользовательской реализации журналаC#

Место общения программистов C#
Ответить
Anonymous
 IAsyncactionFilter с использованием пользовательской реализации журнала

Сообщение Anonymous »

В моем основном проекте ASP.NET я хочу проверить, есть ли вызов API в заголовке. Для этого я создал новый атрибут как это:

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

[AttributeUsage(validOn: AttributeTargets.Class | AttributeTargets.Method)]
public class ValidateApiKeyAttribute : Attribute, IAsyncActionFilter
{
private ILogService? _logger;
}

public ValidateApiKeyAttribute(ILogService? logger)
{
_logger = logger;
}

public async Task OnActionExecutionAsync(ActionExecutingContext context,
ActionExecutionDelegate next)
{
_logger.Info();
}
< /code>
В контроллере API, когда я метод требует аутентификации, я добавляю: < /p>
[ServiceFilter(typeof(ValidateApiKeyAttribute))]
[HttpGet]
[Route("groups")]
public async Task GetGroupList()
{
return null;
}
В программе.builder.Services.AddScoped(typeof(ILogService), typeof(LogService));
builder.Services.AddControllersWithViews(options =>
{
options.Filters.Add();
});
< /code>
Проект компилируется, но когда я пытаюсь прочитать API, я получаю эту ошибку: < /p>

system.invalidoperationexception: никакой службы для типа 'myproject.attributes.validateapikeyattribt' не было зарегистрировано. Microsoft.extensions.dependencyInction.serviceProviderServiceExtensions.getRequiredService (поставщик iServiceProvider, тип ServiceType)

at microsoft.aspnetcore.mvc.servicefilterattribut.createinstance (iservortprovider.mvc.servicefilterattribute.createinStance (iserVICEPROVIDER). Microsoft.aspnetcore.mvc.filters.defaultfilterprovider.providefilter (context filterProviderContext, FilterItem)

at microsoft.aspnetcore.mvc.filters.defaultfilterprovider.onprovidersexecuting (filterprovidectextectext.> Microsoft.aspnetcore.mvc.filters.filterfactory.createuncachedfilterscore (ifilterprovider [] FilterPiders, ActionContext ActionContext, List`1 FilterItems)

at microsoft.aspnetcore.mvc.filterfactory.getalterfiltersIder. ActionContext actionContext)

at microsoft.aspnetcore.mvc.infrastructure.controlleractionInvokerCache.getCachedResult (controlerContext controlerContext)

at Microsoft.aspnetcore.mvc.routing.controllerrequestdelegatefactory. C__displayclass12_0.b__0 (контекст httpcontext)

at microsoft.aspnetcore.authorization.authorizationmiddleware.invoke (httpcontextextext. Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)

at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)

at Microsoft.aspnetcore.authentication.authenticationmiddleware.invoke (контекст httpcontext)

at microsoft.aspnetcore.diagnostics.developerexceptionpagemiddle.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ementation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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