Asp.net core Audit.NET和Asp.NET核心页面
我正在ASP.NET核心应用程序中使用razor页面。我需要启用日志记录,它可以与ASP.NET MVC控制器配合使用,但不能与Razor页面配合使用 下面是我如何使用Asp.net core Audit.NET和Asp.NET核心页面,asp.net-core,razor-pages,audit.net,Asp.net Core,Razor Pages,Audit.net,我正在ASP.NET核心应用程序中使用razor页面。我需要启用日志记录,它可以与ASP.NET MVC控制器配合使用,但不能与Razor页面配合使用 下面是我如何使用Audit属性声明PageModel类的示例: [审计(EventTypeName=“{area}/{Page}({verb})”, IncludeResponseBody=true, IncludeRequestBody=true, IncludeHeaders=正确, includemel=真)] 公共类LoginIndexM
Audit
属性声明PageModel
类的示例:
[审计(EventTypeName=“{area}/{Page}({verb})”,
IncludeResponseBody=true,
IncludeRequestBody=true,
IncludeHeaders=正确,
includemel=真)]
公共类LoginIndexModel:PageModel
{
...
}
调用AuditAttribute
操作筛选器时,它会抛出NullReferenceException
以下是在AuditAttribute
中声明的方法:(据我所知,
actionDescriptor
参数不能强制转换为ControllerActionDescriptor
)
private bool IsActionIgnored(ActionDescriptor ActionDescriptor)
{
if(actionDescriptor==null)
返回false;
返回((IEnumerable)(actionDescriptor作为ControllerActionDescriptor)。ControllerTypeInfo
.GetCustomAttributes(typeof(auditionOrateAttribute),true)).Any()||
((IEnumerable)(actionDescriptor作为ControllerActionDescriptor).MethodInfo
.GetCustomAttributes(typeof(auditionOrateAttribute),true)).Any();
}
那么在这种情况下我能做什么呢?
有人遇到过类似的问题吗?MVC的审核机制是通过操作过滤器实现的,但操作过滤器是 对于razor页面,提供了一个,因此您可以配置审核 使用提供的
AuditPageFilter
而不是[Audit]
属性
基本上,您只需要在启动逻辑中将过滤器添加到集合中,例如:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages()
.AddMvcOptions(options =>
{
options.Filters.Add(new Audit.Mvc.AuditPageFilter()
{
IncludeHeaders = true, ...
});
});
}
查看自述文件。MVC的审核机制是通过操作过滤器实现的,但操作过滤器是 对于razor页面,提供了一个,因此您可以配置审核 使用提供的
AuditPageFilter
而不是[Audit]
属性
基本上,您只需要在启动逻辑中将过滤器添加到集合中,例如:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages()
.AddMvcOptions(options =>
{
options.Filters.Add(new Audit.Mvc.AuditPageFilter()
{
IncludeHeaders = true, ...
});
});
}
查看自述文件。这需要一些工作才能使其与Razor页面兼容,我创建此文件是为了跟踪进度。这需要一些工作才能使其与Razor页面兼容,我创建此文件是为了跟踪进度