来自同一项目中的自定义 Class 的 WebApi 2 调用操作
WebApi 2 Call Action From Custom Class in Same Project
我将从异常处理程序中插入日志,并且我已对 post 日志执行操作。如何正确调用我的服务操作?
每次创建实例是否正确?
public class CustomExceptionHandler : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
var exceptionModel = new System_Logs() { Date = DateTime.Now, Request = actionExecutedContext.Request.RequestUri.AbsoluteUri, Response = actionExecutedContext.Response.Content.ToString()};
System_LogsController controller = new System_LogsController();
controller.PostSystem_Logs(exceptionModel);
base.OnException(actionExecutedContext);
}
}
您应该创建一个日志记录服务 class(而不是控制器 class)来处理日志记录。如果您正在使用依赖注入,对于自定义过滤器属性使用 属性 注入使用 [Dependency]
annotation/decorator 到 属性。该日志记录服务将通过注入容器初始化。您可以在 SO 中搜索 IoC(例如 Unity、autofac、ninject 等)以帮助您入门。值得了解这个 IoC 和依赖注入原则,因为它既可以应用于服务器端,也可以应用于客户端(javascript 开发)。
详细说明您目前拥有的东西。您上面的代码将类似于:
public class CustomExceptionHandler : ExceptionFilterAttribute
{
[Dependency]
public ILoggingService LoggingService { get; set; }
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
var exceptionModel = new System_Logs() { Date = DateTime.Now, Request = actionExecutedContext.Request.RequestUri.AbsoluteUri, Response = actionExecutedContext.Response.Content.ToString()};
LoggingService.PostSystemLogs(exceptionModel);
base.OnException(actionExecutedContext);
}
}
我将从异常处理程序中插入日志,并且我已对 post 日志执行操作。如何正确调用我的服务操作?
每次创建实例是否正确?
public class CustomExceptionHandler : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
var exceptionModel = new System_Logs() { Date = DateTime.Now, Request = actionExecutedContext.Request.RequestUri.AbsoluteUri, Response = actionExecutedContext.Response.Content.ToString()};
System_LogsController controller = new System_LogsController();
controller.PostSystem_Logs(exceptionModel);
base.OnException(actionExecutedContext);
}
}
您应该创建一个日志记录服务 class(而不是控制器 class)来处理日志记录。如果您正在使用依赖注入,对于自定义过滤器属性使用 属性 注入使用 [Dependency]
annotation/decorator 到 属性。该日志记录服务将通过注入容器初始化。您可以在 SO 中搜索 IoC(例如 Unity、autofac、ninject 等)以帮助您入门。值得了解这个 IoC 和依赖注入原则,因为它既可以应用于服务器端,也可以应用于客户端(javascript 开发)。
详细说明您目前拥有的东西。您上面的代码将类似于:
public class CustomExceptionHandler : ExceptionFilterAttribute
{
[Dependency]
public ILoggingService LoggingService { get; set; }
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
var exceptionModel = new System_Logs() { Date = DateTime.Now, Request = actionExecutedContext.Request.RequestUri.AbsoluteUri, Response = actionExecutedContext.Response.Content.ToString()};
LoggingService.PostSystemLogs(exceptionModel);
base.OnException(actionExecutedContext);
}
}