У меня есть пользовательский атрибут ведения журнала, как показано ниже:
public class LoggerAttribute: ActionFilterAttribute
{
private readonly IHttpLogService _httpLogService;
private readonly ILogService _logService;
public LoggerAttribute(IHttpLogService httpLogService, ILogService logService)
{
_httpLogService = httpLogService;
_logService = logService;
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
LogDetails(filterContext);
}
private void LogDetails(ActionExecutingContext filterContext)
{
try
{
HttpLogService httpService = new HttpLogService();
var httplogger = new LogMetaData()
{
RequestParams = filterContext,
ResponseParams = filterContext
};
_httpLogService.Emit("source", "", "Name", httplogger);
}
catch (Exception ex)
{
_logService.Emit(Core.Enums.LogLevel.Error, "token", "Error encountered while trying to execute the request.", ex);
throw new Exception("An error occurred. Please try again later.");
}
}
}
Ниже приведен код метода действия контроллера, из которого мне нужно выполнить вышеупомянутый фильтр, но приведенный ниже код не работает, потому что я я не уверен, как передать службу через атрибут:
[LoggerAttribute]
public int testMethod(RequestObject obj)
{
-----
}
IHttpLogService & ILogService - это то, что мне нужно вставить в мой атрибут настраиваемого фильтра. Но я не совсем уверен, как я могу это сделать. Может кто-нибудь помочь мне с этим?