Plotly.NET 访问互联网异常

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

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

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

我是否需要在我的服务器上配置一些东西才能不需要访问互联网?是否需要在服务器上部署一些东西,以便它不需要访问互联网(看起来它正在尝试下载无头浏览器)。

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

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>[email protected]()
     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 [email protected](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
c# plotly.net
1个回答
0
投票

所有 ImageExport 扩展都使用 PuppeteerSharp,因此需要 chromium 可执行文件。默认情况下,该库会尝试下载该可执行文件,但您也可以使用本地可执行文件来阻止这种情况。

另请参阅 https://github.com/plotly/Plotly.NET/issues/295

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

要点是您可以通过设置此全局变量来设置可执行路径:

Plotly.NET.ImageExport.PuppeteerSharpRendererOptions.localBrowserExecutablePath

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