C# Html Agility Pack';s LoadFromWebAsync

C# Html Agility Pack';s LoadFromWebAsync,c#,html-agility-pack,nullreferenceexception,blazor-server-side,C#,Html Agility Pack,Nullreferenceexception,Blazor Server Side,我正在使用Html Agility Pack从URL获取元标记。我使用的是HtmlWeb的Load,但我发现它花费的时间太长,我认为我可以使用异步方法来提高性能。然而,当我尝试使用LoadFromWebAsync时,我得到了一个NullReferenceException 使用Load 公共静态元标记GetMetaData(字符串url) { //这很有效 var webGet=new HtmlWeb(); var document=webGet.Load(url); var metaTags=

我正在使用Html Agility Pack从URL获取元标记。我使用的是
HtmlWeb
Load
,但我发现它花费的时间太长,我认为我可以使用异步方法来提高性能。然而,当我尝试使用
LoadFromWebAsync
时,我得到了一个NullReferenceException

使用
Load

公共静态元标记GetMetaData(字符串url)
{
//这很有效
var webGet=new HtmlWeb();
var document=webGet.Load(url);
var metaTags=document.DocumentNode.SelectNodes(“//meta”);
MetaTags metaInfo=新的MetaTags(url);
//更多代码
}
使用
LoadFromWebAsync

公共静态异步任务GetMetaData(字符串url) { //这不管用 var webGet=new HtmlWeb(); var document=wait webGet.LoadFromWebAsync(url);//在此处中断 var metaTags=document.DocumentNode.SelectNodes(“//meta”); MetaTags metaInfo=新的MetaTags(url); //更多代码 } 我使用此方法获取要传递到
新闻卡
组件的url数据,我尝试这样做:


问题是我试图在加载数据之前显示数据。这是因为我在使用async,但在它等待结果时没有提供要显示的内容。可以通过执行以下操作进行修复:

if(news.HasData==false){
装载

} 否则{ @新闻,标题

} @代码{ 公共元标记新闻{get;set;} 受保护的重写异步任务OnInitializedAsync() { news=newmetatags(newsUrl);//初始化为HasData=false news=wait MetaScraper.GetMetaData(newsUrl);//稍后填写数据。 } }
到底是什么东西坏了?在本例中,什么是null?我尝试了异步方法,它可以正常工作到这一行:var metaTags=document.DocumentNode.SelectNodes(“//meta”);//它包含一个HtmlNodeCollection,您可以进一步处理它。我不确定什么是空的,我在Blazor中工作,当它中断时,它会退出到_Host.cshtml的这一行:
服务器预渲染
用于Blazor服务器,这意味着您可以调试应用程序并使用断点。您还可以使用异常处理和日志记录来查看引发异常的位置。完整的异常文本包含引发异常的位置,以及显示导致异常的调用的堆栈跟踪it@PanagiotisKanavos我已经更新了我的问题,以包括堆栈跟踪,但我对它的理解还不够透彻,无法将其指向导致问题的一行代码。在
等待…
行之后,我无法点击任何断点。请接受您的答案,以便问题可以显示为答案。我不能,您必须等待24小时才能接受您发布到您自己问题上的答案
ThinBlueLieB.Components.NewsCard.<BuildRenderTree>b__0_0(RenderTreeBuilder __builder2)
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(int sequence, RenderFragment fragment)
Syncfusion.Blazor.Cards.SfCard.BuildRenderTree(RenderTreeBuilder __builder)
Microsoft.AspNetCore.Components.ComponentBase.<.ctor>b__6_0(RenderTreeBuilder builder)
Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment)
Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry renderQueueEntry)
Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.HandleException(Exception exception)
Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessPendingRender()
Microsoft.AspNetCore.Components.RenderTree.Renderer.AddToRenderQueue(int componentId, RenderFragment renderFragment)
Microsoft.AspNetCore.Components.ComponentBase.StateHasChanged()
Microsoft.AspNetCore.Components.ComponentBase.CallOnParametersSetAsync()
Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()
Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.HandleException(Exception exception)
Microsoft.AspNetCore.Components.RenderTree.Renderer.AddToPendingTasks(Task task)
Microsoft.AspNetCore.Components.Rendering.ComponentState.SetDirectParameters(ParameterView parameters)
Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderRootComponentAsync(int componentId, ParameterView initialParameters)
Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.CreateInitialRenderAsync(Type componentType, ParameterView initialParameters)
Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.RenderComponentAsync(Type componentType, ParameterView initialParameters)
Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext+<>c__11<TResult>+<<InvokeAsync>b__11_0>d.MoveNext()
Microsoft.AspNetCore.Mvc.ViewFeatures.StaticComponentRenderer.PrerenderComponentAsync(ParameterView parameters, HttpContext httpContext, Type componentType)
Microsoft.AspNetCore.Mvc.ViewFeatures.ComponentRenderer.PrerenderedServerComponentAsync(HttpContext context, ServerComponentInvocationSequence invocationId, Type type, ParameterView parametersCollection)
Microsoft.AspNetCore.Mvc.ViewFeatures.ComponentRenderer.RenderComponentAsync(ViewContext viewContext, Type componentType, RenderMode renderMode, object parameters)
Microsoft.AspNetCore.Mvc.TagHelpers.ComponentTagHelper.ProcessAsync(TagHelperContext context, TagHelperOutput output)
Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.<RunAsync>g__Awaited|0_0(Task task, TagHelperExecutionContext executionContext, int i, int count)
ThinBlueLieB.Pages.Pages__Host.<ExecuteAsync>b__17_1() in _Host.cshtml
+
        <component type="typeof(App)" render-mode="ServerPrerendered" />        
Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.SetOutputContentAsync()
ThinBlueLieB.Pages.Pages__Host.ExecuteAsync() in _Host.cshtml
+
    Layout = null;
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context)
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, bool invokeViewStarts)
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context)
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, string contentType, Nullable<int> statusCode)
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, string contentType, Nullable<int> statusCode)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|29_0<TFilter, TFilterAsync>(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext<TFilter, TFilterAsync>(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters()
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
Microsoft.VisualStudio.Web.BrowserLink.BrowserLinkMiddleware.ExecuteWithFilter(IHttpSocketAdapter injectScriptSocket, string requestId, HttpContext httpContext)
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.MigrationsEndPointMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)