Фильтры Autofac для определенного асинхронного действия в контроллере не работают - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть контроллер с асинхронным действием.Я хотел бы зарегистрировать ActionFiler (тот, который реализует IAutofacActionFilter, мой код основан на Web API 2, использующий модуль интеграции Autofac Web API) для этого конкретного «асинхронного» действия в этом контроллере.Ниже приведены фрагменты, которые я пробовал, и это не сработало.Но синхронные действия работают, как указано в руководящих документах Autofac.

Попробовал несколько способов задания асинхронного действия в конфигурации «Регистрация», но ничего не получалось.Пожалуйста, обратитесь к приведенным ниже фрагментам для получения проверенного кода.

builder.RegisterWebApiFilterProvider(GlobalConfiguration.Configuration);
builder.Register(componentContext => new RequestLatencyTrackerActionFilter())
    .AsWebApiActionFilterFor<>((actionSelector) => Task.Run<IHttpActionResult>(() => actionSelector.GetMyActionAsync(default(string)))))
    .InstancePerApiRequest();

Или,

builder.Register(componentContext => new RequestLatencyTrackerActionFilter())
    .AsWebApiActionFilterFor<>((actionSelector) => actionSelector.GetMyActionAsync(default(string)).Wait()))
    .InstancePerApiRequest();

Действует действие «Не асинхронно»,

builder.Register(componentContext => new RequestLatencyTrackerActionFilter())
    .AsWebApiActionFilterFor<>((actionSelector) => actionSelector.GetMyNonAsyncAction(default(string))))
    .InstancePerApiRequest();

Являются ли регистрации?для асинхронных действий, поддерживаемых в модулях интеграции Autofac Web API?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...