Web 连接器故障排除

Web.Contents、Web.BrowserContents 和 Web.Page 之间有何区别?

Web.Contents

  • Web.Contents 用于检索不需要通过浏览器访问的 Web 内容,例如 CSV 文件、JSON API 结果等。
  • 它支持各种身份验证选项。
  • 它可以在云环境(如 Power Query Online)中使用,而无需网关。

Web.Page

  • Web.Page 是用于检索需要通过浏览器(如 HTML 页面)访问的 Web 内容的旧功能。
  • 它基于 Internet Explorer 构建。 由于此要求,它将在 UI 中被替换为 Web.BrowserContents。 但是, Web.Page 将继续在引擎级别用于实现向后兼容性。
  • 需要在云环境中使用网关,例如 Power Query Online。

Web.BrowserContents

  • Web.BrowserContents 是一个更新后的函数,用于检索需要通过浏览器访问的 Web 内容(如 HTML 页面)。
  • 在 UI 中,Web.BrowserContents 正在替换 Web.Page,因为 Web.Page 基于 Internet Explorer。
  • Web.BrowserContents 最初基于 Chromium 构建,不过现在会使用 Microsoft Edge 的 WebView2 控件。
  • 需要在云环境中使用网关,例如 Power Query Online。

下表总结了它们之间的不同。

Web.Contents Web.Page Web.BrowserContents
非浏览器内容(.txt/.csv 文件、JSON 等) x
浏览器内容 (HTML) x x
支持的身份验证类型 匿名
Windows
基本
Web API
组织帐户
匿名
Windows (仅当前用户的凭据)
Web API
匿名
Windows
基本
Web API
需要云主机中的网关 N Y Y
当前生成途径 所有主机 Excel 和 Power Query Online Power BI Desktop
内置 .NET Internet Explorer Microsoft Edge 的 WebView2 控件

注意

POST 请求只能在使用 Web.Contents 时匿名发出。

Web 视图中的“不再支持此浏览器”警告

导入网页时,可以使用 Power Query 导航器对话框中的 Web 视图选项卡查看页面预览。 此预览有时可能会显示警告,例如“不再支持此浏览器”。 发生这种情况,通常是因为 Web 视图当前使用 Internet Explorer 呈现 Web 视图预览,而某些网站不再支持此浏览器。 但是,这只会影响 Web 视图,而不会影响 Web 连接器本身。 只要使用基于 Web.ContentsWeb.BrowserContents(而不是 Web.Page)的连接器,就可以放心地忽略此类警告。 有关不同 Web 连接器及其基础技术的详细信息,请参阅 Web.Contents、Web.BrowserContents 和 Web.Page 之间有何区别?

处理动态网页

动态加载内容的网页可能需要特殊处理。 如果发现 Web 查询中出现零星错误,你可能正在尝试访问动态网页。 此类错误的一个常见示例是:

  1. 刷新连接到站点的查询。
  2. 你看到一条错误(例如,找不到表的“Foo”列)。
  3. 再次刷新该查询。
  4. 不会发生错误。

此类问题通常由计时引起。 动态加载内容的页面有时可能不一致,因为浏览器考虑加载完成后,内容可能会更改。 有时,Web 连接器会在加载所有动态内容后下载 HTML。 有时在下载 HTML 时仍会发生更改,从而导致零星错误。

解决方案是使用 Web.BrowserContentsWaitFor 选项,该选项指示选择器或下载 HTML 前应等待的时长。

如何判断页面是否动态? 通常很简单。 在浏览器中打开页面并监视其加载情况。 如果内容立即显示,则是常规 HTML 页面。 如果随时间而动态显示或更改,则是一个动态页面。

将网关与 Web 连接器配合使用

当发布到云服务(例如 Power BI 语义模型或数据流或 Power Apps 数据流)时,Web.BrowserContentsWeb.Page 都需要使用本地数据网关。 (目前,Dynamics 365 Customer Insights 不支持使用网关。)

如果使用 Web.Page 并收到 Please specify how to connect 错误,请确保已在托管本地数据网关的计算机上安装 Internet Explorer 10 或更高版本。

如果使用 Web.BrowserContents 并收到 We were unable to find the WebView2 runtime 错误,请确保已在托管本地数据网关的计算机上安装 WebView2 运行时。 错误消息应会提供指向 WebView2 运行时安装程序的链接。 如果已安装了运行时但仍看到错误,请确保网关服务帐户(通常是 PBIEgwService)有权访问 WebView2 运行时的安装位置(例如 C:\Program Files (x86)\Microsoft\EdgeWebView)。

使用 Web.BrowserContents 时出现“初始化 Web 浏览器时遇到错误”的错误

如果调用 Web.BrowserContents 的进程在提升模式下运行,则可能会出现此错误,这是因为 WebView2 当前不支持使用管理员权限运行。

使用 Web.Page 而不是 Web.BrowserContents

如果需要使用 Web.Page 而不是 Web.BrowserContents,你仍可以手动使用 Web.Page

在 Power BI Desktop 中,可以通过清除启用 Web 表推理选项来使用较旧的 Web.Page 功能:

  1. 文件选项卡下,选择选项和设置>选项

  2. 全局部分中,选择 Power Query 编辑器

  3. 清除启用 Web 表推理选项,然后选择确定

  4. 重启 Power BI Desktop。

    注意

    目前,无法在针对 Power BI 报表服务器优化的 Power BI Desktop 中关闭 Web.BrowserContents 的使用。

还可以从 Excel 中获取 Web.Page 查询的副本。 从 Excel 复制代码:

  1. 数据选项卡中选择从 Web
  2. 从 Web 对话框中输入地址,然后选择确定
  3. 导航器中,选择要加载的数据,然后选择转换数据
  4. 在 Power Query 的主页选项卡上选择高级编辑器
  5. 高级编辑器中,复制 M 公式。
  6. 在使用 Web.BrowserContents 的应用中,选择空白查询连接器。
  7. 如果要复制到 Power BI Desktop:
    1. 主页选项卡中,选择高级编辑器
    2. 将复制的 Web.Page 查询粘贴到编辑器中,然后选择完成
  8. 如果要复制到 Power Query Online:
    1. 空白查询中,将复制的 Web.Page 查询粘贴到空白查询中。
    2. 选择要使用的本地数据网关。
    3. 选择下一步

还可以在空白查询中手动输入以下代码。 确保输入要加载的网页的地址。

let
  Source = Web.Page(Web.Contents("<your address here>")),
  Navigation = Source{0}[Data]
in
  Navigation

捕获 Web 请求和证书吊销

我们加强了 Web 连接的安全性,以保护你的数据。 但是,这意味着某些方案(如使用 Fiddler 捕获 Web 请求)在默认情况下将不再有效。 要启用这些方案,请执行以下操作:

  1. 打开 Power BI Desktop。

  2. 文件选项卡下,选择选项和设置>选项

  3. 选项中的全局>安全性下,取消选中启用证书吊销检查

    选中了“启用证书吊销”复选框的屏幕截图。

  4. 选择“确定”

  5. 重启 Power BI Desktop。

重要

请注意,取消选中启用证书吊销检查后,Web 连接将不太安全。

若要在组策略中设置此方案,请使用注册表路径“Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Power BI Desktop”下的“DisableCertificateRevocationCheck”键。 将“DisableCertificateRevocationCheck”设置为 0 将始终启用检查(使 Fiddler 和类似软件停止工作),并将“DisableCertificateRevocationCheck”设置为 1 将始终禁用检查(启用 Fiddler 和类似软件)。

更改身份验证方法

在某些情况下,可能需要更改用于访问特定站点的身份验证方法。 如果需要此更改,请转到更改身份验证方法

对任意服务进行身份验证

某些服务支持 Web 连接器直接使用 OAuth/Microsoft Entra ID 身份验证进行身份验证的功能。 但是,大多数情况下不能这么做。

尝试进行身份验证时,如果看到以下错误:

We were unable to connect because this credential type isn’t supported for this resource. Please choose another credential type.

连接到不支持使用 Web 连接器的 OAuth 的端点时出错。

请联系服务所有者。 他们需要更改身份验证配置或生成自定义连接器。

Web 连接器使用 HTTP 1.1 进行通信

Power Query Web 连接器使用 HTTP 1.1 与数据源通信。 如果数据源希望使用 HTTP 1.0 进行通信,可能会收到错误,例如 500 Internal Server Error

无法将 Power Query 切换为使用 HTTP 1.0。 当存在正文时,Power Query 始终会发送一个 Expect:100-continue,以避免在初始调用失败时传递可能较大的有效负载(例如,由于缺少权限)。 当前无法更改此行为。

连接到 Microsoft Graph

Power Query 当前不支持连接到 Microsoft Graph REST API。 详细信息:Power Query 中缺少对 Microsoft Graph 的支持

另请参阅