值不能为空。参数名称:源自 telerik

问题描述 投票:0回答:1

我在我的 c# 项目中使用 Telerik 报告,使用他们的 REST 服务,我使用的是 R1 2017 版本,参数全部加载,并且数据库中各自的数据也加载,但是当我单击预览时,我收到此错误,

当我分析 Telerik DLL 时出现错误,这意味着参数值列表为空,但这不可能是因为我检查了网络日志,所有参数都被传递到 REST API。 这是我发送的有效负载

{"report":"Activity/Registered Users Report.trdp/VisionReport","parameterValues":{"CPR":"353464654","EMAIL":"","MOBILE":"","FromDate":"2023-12-31T00:00:00.000Z","ToDate":"2024-01-01T00:00:00.000Z","ChannelId":["006","002","005"]}}

到此 Telerik URL:

https://localhost:44302/api/reports/clients/aaf42228070/instances

当我在本地环境中运行相同的代码并报告时,它运行正常。不过,当我将代码部署到服务器时,我收到此错误,我在服务器上的 Telerik Designer 上运行了报告,它也加载得很好,只有当我在服务器上的浏览器中加载它时才会出现问题。 以下是我从 Telerik 收到的完整错误。

 {message: "An error has occurred.", exceptionMessage: "Value cannot be null. ↵Parameter name: source",…}
    exceptionMessage
    : 
    "Value cannot be null.\r\nParameter name: source"
    exceptionType
    : 

"System.ArgumentNullException"
message
: 
"An error has occurred."
stackTrace
: 
"   at System.Linq.Enumerable.Select[TSource,TResult](IEnumerable`1 source, Func`2 selector)\r\n   
at Telerik.Reporting.Services.Engine.PersistableCollection`1.GetEnumerator()\r\n   
at Telerik.Reporting.Services.Engine.KeyItemPersistableCollection`2.ResolveItem(K referredInstanceKey, Boolean& newItem)\r\n   
at Telerik.Reporting.Services.Engine.ReportEngine.CreateReportInstance(String clientID, String report, Dictionary`2 parameterValues)\r\n   
at Telerik.Reporting.Services.WebApi.ReportsControllerBase.CreateInstance(String clientID, ClientReportSource reportSource)\r\n   
at lambda_method(Closure , Object , Object[] )\r\n   
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_1.<GetExecutor>b__3(Object instance, Object[] methodParameters)\r\n  
 at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   
 
 
 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   
 at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   
 
 
 
 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   
 at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   
 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   
 at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   
 
 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n  
 at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()"
c# telerik telerik-reporting
1个回答
1
投票

该异常似乎与报告 REST 服务的存储有关。我假设您使用 FileStorage,因为我已经看到这种存储类型存在此问题。这可能是由于某些第三方软件(防病毒、备份工具等)锁定了经常访问的文件。

堆栈跟踪显示枚举存储集合时引发异常。您可以使用File Locksmith之类的工具来查看谁锁定了服务存储的文件夹。

一般来说,Telerik 不建议将 FileStorage 用于生产目的。它不可靠主要是由于锁定机制效率低下。 MSSQL 或 Redis 存储选项要好得多。

这些 Telerik Reporting 资源也可能有用:

© www.soinside.com 2019 - 2024. All rights reserved.