Azure SWA部署含PuppeteerSharp的Func报UnauthorizedAccessException
问题解决方法
1. PuppeteerSharp权限报错修复
根因:Azure Static Web App(SWA)托管的API函数运行时,站点发布目录(包括bin目录)属于只读区域,无写入权限,你修改路径到bin目录依然属于只读范围,所以方案不生效。
正确修改方案:将Chromium下载路径指向SWA运行环境的可写临时目录,同时补充沙箱启动参数:
// 优先使用系统临时目录,SWA Windows环境下该路径为D:\local\Temp,有完整读写权限 var tempPath = Path.Combine(Path.GetTempPath(), ".local-chromium"); var browserFetcher = new BrowserFetcher(new BrowserFetcherOptions { Path = tempPath }); // 检查是否已下载,避免重复下载浪费资源 if (!browserFetcher.LocalRevisions().Contains(BrowserFetcher.DefaultChromiumRevision)) { await browserFetcher.DownloadAsync(); } await using var browser = await Puppeteer.LaunchAsync( new LaunchOptions { Headless = true, ExecutablePath = browserFetcher.RevisionInfo(BrowserFetcher.DefaultChromiumRevision).ExecutablePath, // 适配Azure沙箱限制的必要参数 Args = new [] { "--no-sandbox", "--disable-setuid-sandbox" } } );
如果Windows环境下依然启动失败,可以切换SWA的运行环境为Linux,Linux沙箱对Chromium的兼容性更好。
2. Azure Static Web App Kudu访问说明
- 标准层、付费层SWA支持Kudu访问:访问地址为你的SWA域名添加
.scm前缀,例如SWA访问地址为https://<自定义前缀>.azurestaticapps.net,则Kudu地址为https://<自定义前缀>.scm.azurestaticapps.net,使用Azure账号登录后即可查看目录结构、查看运行日志等。 - 免费层SWA不提供Kudu访问权限,无法通过该方式查看目录。
内容的提问来源于stack exchange,提问作者Andy Man
相关产品推荐
相关产品推荐

