Asp.net core Audit.NET和Asp.NET核心页面

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

我正在ASP.NET核心应用程序中使用razor页面。我需要启用日志记录,它可以与ASP.NET MVC控制器配合使用,但不能与Razor页面配合使用

下面是我如何使用
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页面兼容,我创建此文件是为了跟踪进度