針對內嵌應用程式進行疑難解答

本文討論從 Power BI 內嵌內容時可能會發生的一些常見問題。

疑難排解工具

Fiddler 追蹤

Fiddler 是 Telerik 的免費工具,可監視 HTTP 流量。 您可以使用來自用戶端電腦的 Power BI API 來查看流量。 此工具可能會顯示錯誤和其他相關信息。

Fiddler 工具輸出視窗的螢幕快照,其中顯示 Power BI API HTTP 流量。

在瀏覽器中進行前端偵錯的 F12

F12 鍵會在瀏覽器內啟動開發人員視窗。 此工具可讓您查看網路流量,並查看其他重要資訊。

網頁瀏覽器開發人員視窗 [網络] 索引標籤的螢幕快照,其中顯示網路流量。

從 Power BI 回應擷取錯誤詳細數據

此代碼段示範如何從 HTTP 例外狀況擷取錯誤詳細資料:

public static string GetExceptionText(this HttpOperationException exc)
{
    var errorText = string.Format("Request: {0}\r\nStatus: {1} ({2})\r\nResponse: {3}",
    exc.Request.Content, exc.Response.StatusCode, (int)exc.Response.StatusCode, exc.Response.Content);
    if (exc.Response.Headers.ContainsKey("RequestId"))
    {
        var requestId = exc.Response.Headers["RequestId"].FirstOrDefault();
        errorText += string.Format("\r\nRequestId: {0}", requestId);
    }

    return errorText;
}

建議您記錄要求識別碼(以及疑難解答的錯誤詳細數據)。 在接近 Microsoft 支援時提供要求標識碼。

應用程式註冊

應用程式註冊失敗

Azure 入口網站 或 Power BI 應用程式註冊頁面內的錯誤訊息會在您沒有足夠的許可權來註冊應用程式時通知您。 若要註冊應用程式,您必須是 Microsoft Entra 租使用者中的系統管理員,或必須為非系統管理員使用者啟用應用程式註冊。

註冊新應用程式時,Power BI 服務 不會出現在 Azure 入口網站 中

至少必須註冊一個使用者才能註冊 Power BI。 如果您沒有在 API 清單中看到 Power BI 服務,則不會註冊 Power BI。

應用程式物件標識碼和主體物件標識碼之間的差異為何?

當您註冊 Microsoft Entra 應用程式時,有兩個稱為 對象標識碼的參數。 本節說明每個參數的用途,以及如何取得它。

應用程式物件識別碼

應用程式物件標識碼,也稱為對象標識碼,是 Microsoft Entra 應用程式物件的唯一標識符。

若要取得應用程式物件標識符,請流覽至您的 Microsoft Entra 應用程式,並從 [ 概觀] 複製它。

[Azure 入口網站] 視窗的螢幕快照,其中顯示 Microsoft Entra 應用程式的 [概觀] 刀鋒視窗中的物件標識符。

主體物件標識碼

主體物件標識碼,也稱為對象標識碼,是與 Microsoft Entra 應用程式相關聯的服務主體物件的唯一標識符。

若要取得主體物件標識符,請流覽至您的 Microsoft Entra 應用程式,然後從 [概觀] 中,選取本機目錄中受控應用程式中的應用程式連結

[Azure 入口網站] 視窗的螢幕快照,其中顯示 Microsoft Entra 應用程式的 [概觀] 刀鋒視窗中的 [本機目錄中受管理的應用程式] 選項。

從 [ 屬性] 區段中,複製 [對象識別元]。

Azure 入口網站 視窗的螢幕快照,其中顯示 Microsoft Entra 應用程式 [概觀] 刀鋒視窗中 [屬性] 區段中的主體對象標識碼。

驗證

驗證失敗,AADSTS70002或AADSTS50053

(AADSTS70002:驗證認證時發生錯誤。AADSTS50053:您嘗試使用不正確的使用者識別碼或密碼登入太多次)

如果您使用Power BI Embedded和 Microsoft Entra 直接驗證,當您嘗試登入時,可能會收到類似先前訊息的訊息,因為未啟用直接驗證。

您可以使用限定於組織或服務主體的 Microsoft Entra 原則,重新開啟直接驗證。

建議您只根據每個應用程式啟用此原則。

若要建立此原則,您必須是您要建立原則併為其指派之目錄的全域 管理員 istrator。 以下是建立原則並將它指派給此應用程式的SP的範例腳本:

  1. 安裝 Microsoft Graph PowerShell SDK

  2. 逐行執行下列 PowerShell 命令行(確定變數 $sp 沒有多個應用程式的結果)。

    Connect-MgGraph -Scopes "Directory.Read.All","Policy.ReadWrite.ApplicationConfiguration"
    
    $sp = Get-MgServicePrincipal -Filter "DisplayName eq 'Name_Of_Application'"
    
    $policy = New-MgBetaPolicyActivityBasedTimeoutPolicy -Definition @("{`"AllowCloudPasswordValidation`":true}") `
       -DisplayName EnableDirectAuth -IsOrganizationDefault:$false
    
    $params = @{
       "@odata.id" = "https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies/$policy.Id"
    }
    New-MgBetaServicePrincipalClaimMappingPolicyByRef -ServicePrincipalId $sp.Id `
       -BodyParameter $params
    

指派原則之後,請等候大約 15-20 秒的傳播,再進行測試。

提供有效的身分識別時產生令牌失敗

GenerateToken 可能會因為幾個不同原因而提供有效的身分識別而失敗:

  • 語意模型不支援有效的身分識別。
  • 未提供用戶名稱。
  • 未提供角色。
  • DatasetId 未提供。
  • 用戶沒有正確的許可權。

若要判斷問題,請嘗試下列步驟:

  • 執行 取得數據集。 屬性 IsEffectiveIdentityRequired 是否成立?
  • 任何都需要用戶 EffectiveIdentity名稱。
  • 如果 IsEffectiveIdentityRolesRequired 為 true,則需要 Role。
  • DatasetId 是任何 EffectiveIdentity的必要專案。
  • 針對 Analysis Services,主要用戶必須是閘道管理員。

AADSTS90094:授與需要系統管理員許可權

徵兆:

當非系統管理員使用者在授與同意時第一次嘗試登入應用程式時,則會收到下列其中一個錯誤:

  •   ConsentTest needs permission to access resources in your organization that only an admin can grant. Ask an admin to grant permission to this app before you can use it.
    
  •   AADSTS90094: The grant requires admin permission.
    

    [Azure 入口網站] 視窗登入對話框的螢幕快照,其中顯示同意測試許可權錯誤。

系統管理員可以登入並成功授與同意。

根本原因:

已停用租用戶的使用者同意。

有數個修正程式:

  • 為整個租使用者啟用使用者同意(所有使用者、所有應用程式):
  1. 在 Azure 入口網站 中,流覽至 [Microsoft Entra ID>使用者和群組>使用者設定]。
  2. 啟用 [ 使用者可以同意應用程式代表 他們存取公司數據] 設定,並儲存變更。

Azure 入口網站的螢幕擷取畫面。

  • 系統管理員可以將許可權授與應用程式 - 適用於整個租使用者或特定使用者。

CS1061 錯誤

如果您遇到下列錯誤,請下載 Microsoft.IdentityModel.Clients.ActiveDirectory

'AuthenticationContext' does not contain a definition for 'AcquireToken' and no accessible 'AcquireToken' accepting a first argument of type 'AuthenticationContext' could be found (are you missing a using directive or an assembly reference?)

不同租使用者的 Microsoft Entra 令牌(來賓使用者)

當您 為組織內嵌時,若要允許 Microsoft Entra 來賓使用者存取您的內容,您必須在 參數中 authorityUri 指定租使用者識別碼。

  • 用於在組織租使用者中驗證的網址:

    https://login.microsoftonline.com/common/v2.0

  • 驗證來賓 Microsoft Entra 使用者的 URL:

    https://login.microsoftonline.com/<tenant ID>

若要尋找您的租使用者識別碼,您可以使用尋找 Microsoft Entra 租使用者識別碼和主要功能變數名稱中的指示。

如需詳細資訊,請參閱讓應用程式成為多租用戶

資料來源

ISV 想要擁有相同數據源的不同認證

數據源可以有一組單一認證給一個主要使用者。 如果您需要使用不同的認證,請建立更多主要使用者。 然後,將不同的認證指派給每個主要用戶的內容,並使用該使用者的 Microsoft Entra 令牌進行內嵌。

使用 IError 物件對內嵌應用程式進行疑難解答

使用 JavaScript SDK 錯誤事件傳回的 IError 物件來偵錯您的應用程式,並進一步了解錯誤的原因。

取得 IError 物件之後,您應該查看適合您所使用的內嵌類型的適當常見錯誤數據表。 比較 IError 屬性與數據表中的屬性,並找出失敗的可能原因。

內嵌 Power BI 使用者時的一般錯誤

訊息 詳細訊息 錯誤碼 可能的原因(s)
TokenExpired 存取令牌已過期,使用新的存取令牌重新提交 403 過期的權杖
PowerBIEntityNotFound 取得報告失敗 404
  • 錯誤的報表標識碼
  • 報表不存在
  • 無效的參數 未指定 powerbiToken 參數 N/A
  • 未提供存取令牌
  • 未提供任何報告標識碼
  • LoadReportFailed 無法初始化 - 無法解析叢集 403
  • 不正確的存取令牌
  • 內嵌類型不符合令牌類型
  • PowerBINotAuthorizedException 取得報告失敗 401
  • 錯誤的群組識別碼
  • 未經授權的群組
  • TokenExpired 存取令牌已過期,使用新的存取令牌重新提交。 無法轉譯標題為: 視覺效果標題的報表視覺效果 N/A
  • 查詢數據
  • 過期的權杖
  • Open 連線 ionError 無法顯示視覺效果。 無法轉譯標題為: 視覺效果標題的報表視覺效果 N/A 當與容量相關的報表在會話中開啟時,容量已暫停或刪除
    ExplorationContainer_FailedToLoadModel_DefaultDetails 無法載入與此報表相關聯的模型架構。 請確定您有伺服器的連線,然後再試一次。 N/A
  • 已暫停容量
  • 已刪除容量
  • 非 Power BI 使用者內嵌時的典型錯誤(使用內嵌令牌)

    訊息 詳細訊息 錯誤碼 原因(秒)
    TokenExpired 存取令牌已過期,使用新的存取令牌重新提交 403 過期的權杖
    LoadReportFailed 取得報告失敗 404
  • 錯誤的報表標識碼
  • 報表不存在
  • LoadReportFailed 取得報告失敗 403 報表標識碼不符合令牌
    LoadReportFailed 取得報告失敗 500 報表提供的標識碼不是 GUID
    無效的參數 未指定 powerbiToken 參數 N/A
  • 未提供存取令牌
  • 未提供任何報告標識碼
  • LoadReportFailed 無法初始化 - 無法解析叢集 403 錯誤的令牌類型或錯誤的令牌
    PowerBINotAuthorizedException 取得報告失敗 401 錯誤的/未經授權的群組標識符
    TokenExpired 存取令牌已過期,使用新的存取令牌重新提交。 無法轉譯標題為: 視覺效果標題的報表視覺效果 N/A
  • 查詢數據
  • 過期的權杖
  • Open 連線 ionError 無法顯示視覺效果。 無法轉譯標題為: 視覺效果標題的報表視覺效果 N/A 當與容量相關的報表在會話中開啟時,容量已暫停或刪除
    ExplorationContainer_FailedToLoadModel_DefaultDetails 無法載入與此報表相關聯的模型架構。 請確定您有伺服器的連線,然後再試一次。 N/A
  • 已暫停容量
  • 已刪除容量
  • 取得報告失敗 - 錯誤 401 - 自行解決

    使用者擁有數據 案例中,有時候使用者會收到 401 錯誤,會在使用者存取 Power BI 入口網站之後自行解決。 發生 401 錯誤時,請在應用程式中新增 RefreshUser 許可權呼叫,如更新用戶權力中所述

    語意模型

    管理使用者可以看到哪些部分的數據

    任何具有語意模型讀取許可權的使用者都可以查看整個架構(數據表、數據行和量值)和所有數據。 您無法控制在相同語意模型中個別檢視原始和匯總數據的許可權。

    若要管理使用者可以檢視的數據部分,請使用下列其中一種方法:

    內容轉譯

    若要解決內嵌 Power BI 專案中的轉譯問題(例如報表和儀錶板),請檢閱本節。

    確認 Power BI 專案載入 Power BI 服務

    若要排除應用程式或內嵌 API 的問題,請確認專案可以在 Power BI 服務 中檢視(powerbi.com)。

    確認 Power BI 專案在 Power BI 內嵌式分析遊樂場中載入

    若要排除應用程式的問題,請確認Power BI專案可以在Power BI內嵌式分析遊樂場檢視。

    確認您的存取令牌未過期

    基於安全性目的,存取令牌(Microsoft Entra 令牌或內嵌令牌)的存留期有限。 您應該持續監視您的存取令牌,並視需要重新整理。 如需詳細資訊,請參閱 重新整理存取令牌

    效能

    若要取得最佳效能的內嵌內容,建議您遵循 Power BI 內嵌式分析最佳做法

    內嵌安裝工具

    您可以瀏覽 內嵌安裝工具來 快速下載範例應用程式。 然後,您可以將應用程式與範例進行比較。

    必要條件

    使用內嵌安裝工具之前,請確認您擁有所有適當的必要條件。 您需要 Power BI Pro 帳戶和 Microsoft Azure 訂 用帳戶。

    常見的問題

    使用內嵌安裝工具進行測試時可能會遇到的一些常見問題如下:

    針對您的客戶使用內嵌範例應用程式

    如果您正在使用 內嵌讓客戶 體驗,請儲存並解壓縮 PowerBI-Developer-Samples.zip 檔案。 然後開啟 PowerBI-Developer-Samples-master\App Owns Data 資料夾,然後執行 PowerBIEmbedded_AppOwnsData.sln 檔案。

    • 選取 [授與許可權] 時(授與許可權 步驟),您會收到下列錯誤:
    AADSTS70001: Application with identifier <client ID> wasn't found in the directory <directory ID>
    

    解決方案是關閉快顯,請稍候幾秒鐘再試一次。 您可能需要重複此動作幾次。 時間間隔會導致問題從完成應用程式註冊程式到外部 API 時發生。

    • 執行範例應用程式時會出現下列錯誤訊息:
    Password is empty. Please fill password of Power BI username in web.config.
    

    之所以發生此錯誤,是因為未插入範例應用程式的唯一值就是您的用戶密碼。 開啟方案中的 Web.config 檔案,並以使用者的密碼填入pbiPassword字段。

    • 如果您收到錯誤:
    AADSTS50079: The user is required to use multi-factor authentication.
    

    您必須使用未啟用 MFA 的 Microsoft Entra 帳戶。

    針對組織範例應用程式使用內嵌

    如果您正在使用 內嵌組織 體驗,請儲存並解壓縮 PowerBI-Developer-Samples.zip 檔案。 然後開啟 PowerBI-Developer-Samples-master\User Owns Data\integrate-report-web-app 資料夾,然後執行 pbi-saas-embed-report.sln 檔案。

    • 當您為組織範例應用程式執行內嵌時,您會收到下列錯誤:
    AADSTS50011: The reply URL specified in the request doesn't match the reply URLs configured for the application: <client ID>
    

    此錯誤是因為為網頁伺服器應用程式指定的重新導向URL與範例的URL不同。 如果您想要註冊範例應用程式,請使用 https://localhost:13526/ 作為重新導向URL。

    如果您想要編輯已註冊的應用程式, 請更新 Microsoft Entra 已註冊的應用程式,讓應用程式可以提供 Web API 的存取權。

    如果您想要編輯 Power BI 使用者設定檔或數據,請瞭解如何編輯 Power BI 資料

    • 如果您收到錯誤:
    AADSTS50079: The user is required to use multi-factor authentication.
    

    您必須使用未啟用 MFA 的 Microsoft Entra 帳戶。

    如需詳細資訊,請參閱 Power BI Embedded常見問題

    如需進一步的協助,請連絡支持人員透過 Azure 入口網站 建立支援票證,並提供您遇到的錯誤訊息。

    更多問題嗎? 詢問 Power BI 社群