You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法定位NullReferenceException来源的.NET项目问题排查求助

问题描述

我有一个配置几乎完全一致的项目可正常运行,但当前项目出现NullReferenceException异常,无法确定空引用的来源。通过Visual Studio断点调试发现,方法签名中的所有变量均不为空。

调用栈信息
ReportBuilder.Application.dll!ReportBuilder.Application.Templates.TemplateHelper.GetTemplateReport(System.Collections.Generic.IEnumerable template, int fiscalYear, int period, System.Threading.CancellationToken cancellationToken) Line 40    C#
ReportBuilder.API.dll!ReportBuilder.API.Controllers.TemplateController.GetTemplateReport(int FiscalYear, int Period, System.Collections.Generic.IEnumerable Sites, System.Threading.CancellationToken cancellationToken) Line 39  C#
[Lightweight Function]
Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(Microsoft.AspNetCore.Mvc.Infrastructure.IActionResultTypeMapper mapper, Microsoft.Extensions.Internal.ObjectMethodExecutor executor, object controller, object[] arguments)    Unknown
Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync.__Logged|12_1(Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker invoker)    Unknown
Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync() Unknown
Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.State next, ref Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Scope scope, ref object state, ref bool isCompleted) Unknown
Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync() Unknown
Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.State next, ref Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Scope scope, ref object state, ref bool isCompleted) Unknown
Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync() Unknown
Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.State next, ref Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Scope scope, ref object state, ref bool isCompleted) Unknown
Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()  Unknown
Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(ref Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.State next, ref Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Scope scope, ref object state, ref bool isCompleted) Unknown
Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextResourceFilter()    Unknown
Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(ref Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.State next, ref Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Scope scope, ref object state, ref bool isCompleted) Unknown
Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()   Unknown
Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeAsync.__Logged|17_1(Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker invoker)    Unknown
Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeAsync() Unknown
Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Routing.ControllerRequestDelegateFactory.CreateRequestDelegate.AnonymousMethod__0(Microsoft.AspNetCore.Http.HttpContext context) Unknown
Microsoft.AspNetCore.Routing.dll!Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext httpContext)  Unknown
Server.Shared.dll!Server.Shared.Services.RequestLogContextMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)  Unknown
Microsoft.AspNetCore.Authorization.Policy.dll!Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)  Unknown
Microsoft.AspNetCore.Authentication.dll!Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)  Unknown
Microsoft.AspNetCore.Routing.dll!Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext httpContext)   Unknown
Microsoft.AspNetCore.StaticFiles.dll!Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)    Unknown
Microsoft.AspNetCore.Http.Abstractions.dll!Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)  Unknown
Microsoft.AspNetCore.Http.Abstractions.dll!Microsoft.AspNetCore.Builder.UseExtensions.Use.AnonymousMethod__2()  Unknown
Server.Shared.dll!Server.Shared.Services.ServiceExtensions.AddSharedConfiguration.AnonymousMethod__4_2(Microsoft.AspNetCore.Http.HttpContext context, System.Func<System.Threading.Tasks.Task> next)    Unknown
Microsoft.AspNetCore.Http.Abstractions.dll!Microsoft.AspNetCore.Builder.UseExtensions.Use.AnonymousMethod__1(Microsoft.AspNetCore.Http.HttpContext context) Unknown
Microsoft.AspNetCore.HttpsPolicy.dll!Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)  Unknown
Microsoft.AspNetCore.StaticFiles.dll!Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)    Unknown
Microsoft.AspNetCore.StaticFiles.dll!Microsoft.AspNetCore.StaticFiles.DefaultFilesMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)  Unknown
Microsoft.AspNetCore.Diagnostics.dll!Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)  Unknown
Microsoft.AspNetCore.Http.Abstractions.dll!Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)  Unknown
Microsoft.AspNetCore.Diagnostics.dll!Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)    Unknown
Microsoft.AspNetCore.ResponseCompression.dll!Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(Microsoft.AspNetCore.Http.HttpContext context)   Unknown
Microsoft.AspNetCore.ResponseCompression.dll!Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)   Unknown
Microsoft.AspNetCore.StaticFiles.dll!Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)    Unknown
Swashbuckle.AspNetCore.SwaggerUI.dll!Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext httpContext) Unknown
Swashbuckle.AspNetCore.Swagger.dll!Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext httpContext, Swashbuckle.AspNetCore.Swagger.ISwaggerProvider swaggerProvider)  Unknown
Microsoft.AspNetCore.Http.Abstractions.dll!Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.UseMiddleware.AnonymousMethod__2(Microsoft.AspNetCore.Http.HttpContext context) Unknown
Microsoft.AspNetCore.Diagnostics.dll!Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)    Unknown
Microsoft.AspNetCore.HostFiltering.dll!Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context) Unknown
Microsoft.WebTools.BrowserLink.Net.dll!Microsoft.WebTools.BrowserLink.Net.BrowserLinkMiddleware.InvokeAsync(Microsoft.AspNetCore.Http.HttpContext context)  Unknown
Microsoft.WebTools.BrowserLink.Net.dll!Microsoft.WebTools.BrowserLink.Net.VsContentMiddleware.InvokeAsync(Microsoft.AspNetCore.Http.HttpContext context)    Unknown
Microsoft.AspNetCore.Watch.BrowserRefresh.dll!Microsoft.AspNetCore.Watch.BrowserRefresh.BrowserRefreshMiddleware.InvokeAsync(Microsoft.AspNetCore.Http.HttpContext context) Unknown
Microsoft.AspNetCore.Http.Abstractions.dll!Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)  Unknown
Microsoft.AspNetCore.Hosting.dll!Microsoft.AspNetCore.Hosting.HostingApplication.ProcessRequestAsync(Microsoft.AspNetCore.Hosting.HostingApplication.Context context)   Unknown
Microsoft.AspNetCore.Server.IIS.dll!Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT<Microsoft.AspNetCore.Hosting.HostingApplication.Context>.ProcessRequestAsync()   Unknown
Microsoft.AspNetCore.Server.IIS.dll!Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.HandleRequest() Unknown
Microsoft.AspNetCore.Server.IIS.dll!Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.Execute()   Unknown
System.Private.CoreLib.dll!System.Threading.ThreadPoolWorkQueue.Dispatch()  Unknown
System.Private.CoreLib.dll!System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart() Unknown
System.Private.CoreLib.dll!System.Threading.Thread.StartCallback()  Unknown
相关代码

TemplateHelper.GetTemplateReport 方法

public async Task<byte[]> GetTemplateReport(IEnumerable<long> template, int fiscalYear, int period, CancellationToken cancellationToken = default)
{
    Console.WriteLine("");
    return await _ReportHelper.GetReportBytes(new TemplateReport(fiscalYear, period, template, _Mediator), cancellationToken);
}

ReportHelper.GetReportBytes 方法

public async Task<byte[]> GetReportBytes(IReport report, CancellationToken cancellationToken = default(CancellationToken))
{
    IReport report2 = report;
    IReportBuilder reportBuilder = _ReportBuilder;
    reportBuilder.SetData(await report2.GetReportData(cancellationToken));
    TemplateBuilder templateBuilder = new TemplateBuilder();
    templateBuilder.GetReportOptions(report2.GetReportOptions(new ReportOptions()));
    templateBuilder.SetReportHeaders(report2.GetReportHeaders(new List<ReportHeader>()));
    foreach (ReportColumnSection reportColumnSection in report2.GetReportColumnSections(new ReportColumnSectionsBuilder()))
    {
        templateBuilder.AddColumnSection(reportColumnSection);
    }

    foreach (ReportRowSection reportRowSection in report2.GetReportRowSections(new ReportRowSectionsBuilder()))
    {
        templateBuilder.AddReportSection(reportRowSection);
    }

    templateBuilder.SetRowFormulas(report2.GetRowFormulas(new List<RowFormulaConfig>()));
    _ReportBuilder.SetConfiguration(templateBuilder.Build());
    _ReportBuilder.SetFinalizeCallBack(delegate (IWorksheet x)
    {
        report2.ReportFinalize(x);
    });
    return _ReportBuilder.BuildByteArray();
}

TemplateReport 类

using ReportBuilder.Application.Templates.Queries;
using GrapeCity.Documents.Excel;
using MediatR;
using Reporting.Shared;

namespace ReportBuilder.Application.Templates.Reports;
public class TemplateReport : IReport
{
    private readonly IMediator _Mediator;
    private int FiscalYear;
    private int Period;
    private IEnumerable<long> Templates = Enumerable.Empty<long>();

    public TemplateReport(int fiscalYear, int period, IEnumerable<long> templates, IMediator mediator)
    {
        _Mediator = mediator;
        FiscalYear = fiscalYear;
        Period = period;
        Templates = templates;
    }
}

内容的提问来源于stack exchange,提问作者Jtara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:00:02