尝试跟踪Blazor客户端异常



我们已经使用RadzenBlazor一段时间了,现在取得了很好的成功。最近,过滤导致异常。实际的例外对我来说是不可能的,所以我想知道如何更好地阅读它。我知道Blazor客户端错误不是那么大。大多数时候,当我写代码的时候,你会得到一个变量或其他东西来给我指明原因的方向,但在这种情况下,我不能说得那么近。我可以选择项目和取消选择项目没有问题。当我第二次输入一个字母来过滤列表时,我得到了下面的例外。我只是想弄清楚是Radzen还是别的什么。

我试过从微软文档中实现这个,但是没有显示额外的信息。

首先,下面是DropDown 的代码
<RadzenDropDown Multiple="true"
AllowClear="true"
AllowFiltering="true"
FilterCaseSensitivity="FilterCaseSensitivity.CaseInsensitive"
Placeholder="Select Claim(s)..."
@bind-Value="SelectedClaimIds"
Data="availablePerformanceClaims"
TextProperty="Name"
ValueProperty="Id"
TValue="IEnumerable<int>"
Class="w-100 items-inline">
</RadzenDropDown>
[Inject]
private ISomeService someService { get; set; }
[Inject]
private IMapper mapper { get; set; }
public IEnumerable<PerformanceClaimMinimalModel> availablePerformanceClaims { get; set; } = new List<PerformanceClaimMinimalModel>();
public IEnumerable<int> SelectedClaimIds = Array.Empty<int>();
protected override async Task OnInitializedAsync()
{
availablePerformanceClaims = mapper.Map<IEnumerable<SelectablePerformanceClaimMinimalModel>>(
await someService .GetPerformanceClaimsAsync(new PerformanceClaimSearchModel
{
ValidUntilEnd = null,
})
)
.OrderBy(x => x.Issuer)
.ThenBy(x => x.Name)
.ThenBy(x => x.Version);
}

这里是例外

crit: Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
Unhandled exception rendering component: Object reference not set to an instance of an object.
System.NullReferenceException: Object reference not set to an instance of an object.
at System.Linq.Dynamic.Core.Parser.KeywordsHelper..ctor(ParsingConfig config)
at System.Linq.Dynamic.Core.Parser.ExpressionParser..ctor(ParameterExpression[] parameters, String expression, Object[] values, ParsingConfig parsingConfig)
at System.Linq.Dynamic.Core.DynamicExpressionParser.ParseLambda(Type delegateType, ParsingConfig parsingConfig, Boolean createParameterCtor, ParameterExpression[] parameters, Type resultType, String expression, Object[] values)
at System.Linq.Dynamic.Core.DynamicExpressionParser.ParseLambda(ParsingConfig parsingConfig, Boolean createParameterCtor, ParameterExpression[] parameters, Type resultType, String expression, Object[] values)
at System.Linq.Dynamic.Core.DynamicExpressionParser.ParseLambda(ParsingConfig parsingConfig, Boolean createParameterCtor, Type itType, Type resultType, String expression, Object[] values)
at System.Linq.Dynamic.Core.DynamicQueryableExtensions.Where(IQueryable source, ParsingConfig config, String predicate, Object[] args)
at System.Linq.Dynamic.Core.DynamicQueryableExtensions.Where(IQueryable source, String predicate, Object[] args)
at Radzen.DropDownBase`1[[System.Collections.Generic.IEnumerable`1[[System.Int32, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].get_View()
at Radzen.Blazor.RadzenDropDown`1[[System.Collections.Generic.IEnumerable`1[[System.Int32, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].BuildRenderTree(RenderTreeBuilder __builder)
at Microsoft.AspNetCore.Components.ComponentBase.<.ctor>b__6_0(RenderTreeBuilder builder)
at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException)
window.Module.s.printErr  @  blazor.webassembly.js:1
Te._internal.dotNetCriticalError  @  blazor.webassembly.js:1
Rt  @  blazor.webassembly.js:1
_mono_wasm_invoke_js_blazor  @  dotnet.6.0.4.dckq00jdfr.js:1
$func219  @  00970c26:0x1a0fb
$func167  @  00970c26:0xcac9
$func166  @  00970c26:0xb9dc
$func2810  @  00970c26:0xabb22
$func1615  @  00970c26:0x6f935
$func1619  @  00970c26:0x6ffa2
$mono_wasm_invoke_method  @  00970c26:0x969b
Module._mono_wasm_invoke_method  @  dotnet.6.0.4.dckq00jdfr.js:1
managed__Microsoft_AspNetCore_Components_WebAssembly__Microsoft_AspNetCore_Components_WebAssembly_Services_DefaultWebAssemblyJSRuntime_EndInvokeJS  @  managed__Microsoft_A…time_EndInvokeJS:16
endInvokeJSFromDotNet  @  blazor.webassembly.js:1
(anonymous)  @  blazor.webassembly.js:1
Promise.then (async)    
beginInvokeJSFromDotNet  @  blazor.webassembly.js:1
Rt  @  blazor.webassembly.js:1
_mono_wasm_invoke_js_blazor  @  dotnet.6.0.4.dckq00jdfr.js:1
$func219  @  00970c26:0x1a0fb
$func167  @  00970c26:0xcac9
$func166  @  00970c26:0xb9dc
$func2810  @  00970c26:0xabb22
$func1615  @  00970c26:0x6f935
$func1619  @  00970c26:0x6ffa2
$func3213  @  00970c26:0xc4abd
$mono_background_exec  @  00970c26:0x93f6d
Module._mono_background_exec  @  dotnet.6.0.4.dckq00jdfr.js:1
pump_message  @  dotnet.6.0.4.dckq00jdfr.js:1
setTimeout (async)    
_schedule_background_exec  @  dotnet.6.0.4.dckq00jdfr.js:1
$func2387  @  00970c26:0x93f1e
$func3212  @  00970c26:0xc4a4d
$func219  @  00970c26:0x1a163
$func167  @  00970c26:0xcac9
$func166  @  00970c26:0xb9dc
$func2810  @  00970c26:0xabb22
$func1615  @  00970c26:0x6f935
$func1619  @  00970c26:0x6ffa2
$mono_set_timeout_exec  @  00970c26:0xc49ba
Module._mono_set_timeout_exec  @  dotnet.6.0.4.dckq00jdfr.js:1
mono_wasm_set_timeout_exec  @  dotnet.6.0.4.dckq00jdfr.js:1
mono_wasm_set_timeout_exec  @  dotnet.6.0.4.dckq00jdfr.js:1
setTimeout (async)    
_mono_set_timeout  @  dotnet.6.0.4.dckq00jdfr.js:1
$func3211  @  00970c26:0xc4a45
$func219  @  00970c26:0x1a030
$func167  @  00970c26:0xcac9
$func166  @  00970c26:0xb9dc
$func2810  @  00970c26:0xabb22
$func1615  @  00970c26:0x6f935
$func1613  @  00970c26:0x6f8a7
$func966  @  00970c26:0x502f8
$func219  @  00970c26:0x1a0b4
$func167  @  00970c26:0xcac9
$func166  @  00970c26:0xb9dc
$func2810  @  00970c26:0xabb22
$func1615  @  00970c26:0x6f935
$func1613  @  00970c26:0x6f8a7
$func966  @  00970c26:0x502f8
$func219  @  00970c26:0x1a0b4
$func167  @  00970c26:0xcac9
$func166  @  00970c26:0xb9dc
$func2810  @  00970c26:0xabb22
$func1615  @  00970c26:0x6f935
$func1619  @  00970c26:0x6ffa2
$mono_wasm_invoke_method  @  00970c26:0x969b
Module._mono_wasm_invoke_method  @  dotnet.6.0.4.dckq00jdfr.js:1
managed__Microsoft_AspNetCore_Components_WebAssembly__Microsoft_AspNetCore_Components_WebAssembly_Services_DefaultWebAssemblyJSRuntime_BeginInvokeDotNet  @  managed__Microsoft_A…eginInvokeDotNet:19
beginInvokeDotNetFromJS  @  blazor.webassembly.js:1
b  @  blazor.webassembly.js:1
invokeMethodAsync  @  blazor.webassembly.js:1
(anonymous)  @  blazor.webassembly.js:1
invokeWhenHeapUnlocked  @  blazor.webassembly.js:1
S  @  blazor.webassembly.js:1
C  @  blazor.webassembly.js:1
dispatchGlobalEventToAllElements  @  blazor.webassembly.js:1
onGlobalEvent  @  blazor.webassembly.js:1

原来是BlazorApplicationInsights给了我一个问题。我可能做错了,但我们有一个HttpService,我试图捕捉错误,它做到了。但很明显Radzen对此有意见。我对BAI没有意见,但我必须回头找出问题所在。

private async Task<bool> HandleResponseFailure(HttpVerbs verb, HttpResponseMessage responseMessage)
{
if (!responseMessage.IsSuccessStatusCode)
{
await appInsights.TrackException(
new Error
{
Message = responseMessage.ReasonPhrase,
Name = $"{verb.ToString().ToUpper()} Request Exception: StatusCode: {responseMessage.StatusCode} - {responseMessage.RequestMessage.RequestUri}",
}
);
Utils.HideSpinner();
Utils.WriteError(jsRuntime, $"Error during {verb.ToString().ToUpper()}, Status Code: {responseMessage.StatusCode}, Uri: {responseMessage.RequestMessage.RequestUri}");
// TODO: Do we want this -> Utils.ShowErrorNotification($"{verb.ToString().ToUpper()} Exception", $"Status Code: {responseMessage.StatusCode}n{responseMessage.RequestMessage.RequestUri}");
}
return responseMessage.IsSuccessStatusCode;
}

最新更新