我正在C#中使用Plotly.NET,当它在我的服务器上运行时,它会返回错误,但在我的本地服务器上运行时,它会返回错误.当我调用GenericChart.Toase64JPGString时,堆栈跟踪似乎表明它正在try 访问互联网-特别是使用PuppeteerSharp.

请注意,我的本地用户可以访问互联网,但服务器不能.

我必须在服务器上配置某些内容才能使访问互联网变得不必要?是否必须在服务器上部署一些东西,以便它不需要连接到互联网(看起来它正在try 下载无头浏览器).

作为参考,这是我的堆栈跟踪:

System.Net.WebException: The remote server returned an error: (403) Forbidden.
     at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
     at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
     at System.Net.WebClient.GetWebResponseTaskAsync(WebRequest request)
     at System.Net.WebClient.DownloadBitsAsync(WebRequest request, Stream writeStream, AsyncOperation asyncOp, Action`3 completionDelegate)
     at PuppeteerSharp.BrowserFetcher.DownloadAsync(String revision) in /home/runner/work/puppeteer-sharp/puppeteer-sharp/lib/PuppeteerSharp/BrowserFetcher.cs:line 264
     at PuppeteerSharp.BrowserFetcher.DownloadAsync() in /home/runner/work/puppeteer-sharp/puppeteer-sharp/lib/PuppeteerSharp/BrowserFetcher.cs:line 235
     at <StartupCode$Plotly-NET-ImageExport>.$PuppeteerSharpRenderer.clo@81-4.MoveNext()
     at <StartupCode$Plotly-NET-ImageExport>.$PuppeteerSharpRenderer.Plotly-NET-ImageExport-IGenericChartRenderer-RenderJPGAsync@117.MoveNext()
     --- End of inner exception stack trace ---
     at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
     at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
     at System.Threading.Tasks.Task`1.get_Result()
     at Plotly.NET.ImageExport.AsyncHelper.taskSync@76.Invoke(Task`1 t)
     at Plotly.NET.ImageExport.AsyncHelper.runSync[a,b](FSharpFunc`2 job, a input)
     at Plotly.NET.ImageExport.AsyncHelper.taskSync[a](Task`1 task)
     at Plotly.NET.ImageExport.ChartExtensions.ToBase64JPGString@56.Invoke(GenericChart gChart)
     at PlotGeneratorService.PlotGenerator.Generate(ReportPlot reportPlot) in E:\BuildAgent\_work\569\s\PlotGeneratorService\PlotGenerator.cs:line 62

推荐答案

所有Image Exit扩展都使用PuppeteerSharp,因此需要chromic可执行文件.默认情况下,lib会try 下载该可执行文件,但您也可以使用本地可执行文件来防止这种情况发生.

另见 https://github.com/plotly/Plotly.NET/issues/295

https://github.com/plotly/Plotly.NET/issues/436

要点是您可以通过设置此全局变量来设置可执行路径:Plotly.NET.ImageExport.PuppeteerSharpRendererOptions.localBrowserExecutablePath

Csharp相关问答推荐

我可以将Expressc操作设置为在另一个Expressc操作完成后自动发生吗?

利用.NET 8中的AddStandardResilienceDeliveries和AddStandardHedgingDeliveries实现Resiliency

Blazor:计算值或保留为默认值

我可以 suppress 规则CS 9035一次吗?

在Dapper中使用IasyncEum重写GetAsyncEum方法

. NET 8使用COM向VB6公开

Blazor. NET 8—阶段启动配置文件不启动网站VS2022

如何测量在使用UTF8而不是C#中的UTF16编码字符串时内存使用量的增长

C#带主体的主构造函数?

在PostgreSQL上使用ExecuteSqlRawAsync的C#11原始字符串文字有区分大小写的问题

在C#中有没有办法减少大型数组中新字符串的分配?

如何在Akka.NET中重新启动执行元时清除邮箱

如何在mediatr命令中访问HttpContext而不安装弃用的nuget包

如何让游戏对象在切换场景时被销毁,但在开始新游戏时重新锁定

用于获取字符串的最后12个字符的正则表达式(空格除外)

用于ASP.NET核心的最小扩展坞

如何在C#中从MongoDB IPipelineStageDefinition中获取聚合命令的字段/选项?

为什么我在使用有效令牌的情况下仍未获授权?

WPF如何获取有关从一个视图模型更改另一个视图模型的信息

SqlException:无法打开数据库.升级到Dotnet 8后-数据库兼容性版本-非EFCore兼容性级别