แชร์ผ่าน


แก้ไขปัญหาแอปพลิเคชันแบบฝังตัวของคุณ

บทความนี้อธิบายถึงปัญหาทั่วไปบางอย่างที่อาจเกิดขึ้นเมื่อมีการฝังเนื้อหาจาก Power BI

เครื่องมือการแก้ไขปัญหา

ติดตาม Fiddler

Fiddler เป็นเครื่องมือฟรีจาก Telerik ที่ตรวจสอบปริมาณการใช้งาน HTTP คุณสามารถดูปริมาณการใช้งานได้ด้วย Power BI API จากเครื่องของลูกค้า เครื่องมือนี้อาจแสดงข้อผิดพลาดและข้อมูลอื่น ๆ ที่เกี่ยวข้อง

สกรีนช็อตของหน้าต่างผลลัพธ์เครื่องมือ Fiddler ซึ่งแสดงปริมาณการใช้งาน Power BI API HTTP

F12 ในเบราว์เซอร์สําหรับการแก้ไขจุดบกพร่อง frontend

คีย์ 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 ถ้าคุณไม่เห็น บริการของ Power BI แสดงอยู่ภายในรายการ API แสดงว่าไม่มีผู้ใช้ที่ลงทะเบียนสําหรับ Power BI

ID ออบเจ็กต์ของแอปพลิเคชันและ ID ออบเจ็กต์หลักแตกต่างกันอย่างไร

เมื่อคุณลงทะเบียนแอป Microsoft Entra มีพารามิเตอร์สองตัวที่เรียกว่า ID ออบเจ็กต์ ส่วนนี้อธิบายวัตถุประสงค์ของแต่ละพารามิเตอร์และวิธีการรับข้อมูล

ID ออปเจ็กต์ของแอปพลิเคชัน

application object ID หรือที่เรียกว่า ID ออบเจ็กต์ คือ ID เฉพาะของออบเจ็กต์แอปพลิเคชัน Microsoft Entra ของคุณ

เมื่อต้องการรับ ID ออปเจ็กต์ของแอปพลิเคชัน ให้นําทางไปยังแอป Microsoft Entra ของคุณและคัดลอกจากภาพรวม

สกรีนช็อตของหน้าต่างพอร์ทัล Azure ซึ่งแสดง ID ออบเจ็กต์ใน Blade ภาพรวมของแอปพลิเคชัน Microsoft Entra

ID ออบเจ็กต์ขององค์ประกอบหลัก

ID ออบเจ็กต์หลักหรือที่เรียกว่า ID ออบเจ็กต์ คือ ID ที่ไม่ซ้ํากันของออบเจ็กต์ บริการหลัก ที่เชื่อมโยงกับแอปพลิเคชัน Microsoft Entra ของคุณ

หากต้องการรับ ID ออบเจ็กต์หลักของคุณ ให้นําทางไปยังแอป Microsoft Entra ของคุณและจาก ภาพรวมให้เลือกลิงก์แอปใน แอปพลิเคชันที่มีการจัดการ ในไดเรกทอรีภายใน

สกรีนช็อตของหน้าต่างพอร์ทัล Azure ซึ่งแสดงตัวเลือกแอปพลิเคชันที่มีการจัดการในไดเรกทอรีภายในเครื่องใน blade ภาพรวมของแอปพลิเคชัน Microsoft Entra

จากส่วน คุณสมบัติ ให้คัดลอก ID ออบเจ็กต์ของ

สกรีนช็อตของหน้าต่างพอร์ทัล Azure ซึ่งแสดง ID ออบเจ็กต์หลักในส่วนคุณสมบัติในพาเนลภาพรวมของแอปพลิเคชัน Microsoft Entra

ตรวจ สอบ

การรับรองความถูกต้องล้มเหลวโดยมี AADSTS70002 หรือ AADSTS50053

(AADSTS70002: ข้อมูลประจําตัวผิดพลาด AADSTS50053: คุณได้พยายามลงชื่อเข้าใช้หลายครั้งเกินไปด้วยรหัสผู้ใช้หรือรหัสผ่านที่ไม่ถูกต้อง)

ถ้าคุณกําลังใช้ Power BI Embedded และการรับรองความถูกต้องโดยตรงของ Microsoft Entra คุณอาจได้รับข้อความเหมือนข้อความก่อนหน้าเมื่อคุณพยายามลงชื่อเข้าใช้ เนื่องจากไม่ได้เปิดใช้งานการรับรองความถูกต้องโดยตรง

คุณสามารถเปิดการรับรองความถูกต้องโดยตรงอีกครั้งโดยใช้นโยบาย Microsoft Entra ที่กําหนดขอบเขตสําหรับองค์กร หรือ บริการหลัก

เราขอแนะนําให้คุณเปิดใช้งานนโยบายนี้ในแต่ละแอปเท่านั้น

เมื่อต้องสร้างนโยบายนี้ คุณจําเป็นต้องเป็น ผู้ดูแลระบบส่วนกลางของ สําหรับไดเรกทอรีที่คุณกําลังสร้างนโยบายและกําหนดนโยบายนั้น นี่คือสคริปต์ตัวอย่างสําหรับการสร้างนโยบาย และกําหนดนโยบายให้กับ 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 เป็น true หรือไม่?
  • ชื่อผู้ใช้จําเป็นสําหรับ EffectiveIdentityใด ๆ
  • ถ้า IsEffectiveIdentityRolesRequired เป็นจริง จําเป็นต้องมีบทบาท
  • 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 เข้าถึงเนื้อหาของคุณ คุณจําเป็นต้องระบุ ID ผู้เช่าในพารามิเตอร์ authorityUri

  • URL สําหรับการรับรองความถูกต้องในผู้เช่าขององค์กรของคุณ:

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

  • URL สําหรับการรับรองความถูกต้องผู้ใช้ Microsoft Entra ที่เป็นผู้เยี่ยมชม:

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

เมื่อต้องการค้นหา ID ผู้เช่า ของคุณ คุณสามารถใช้คําแนะนําใน ค้นหา ID ผู้เช่า Microsoft Entra และชื่อโดเมนหลักได้

สําหรับข้อมูลเพิ่มเติม โปรดดู การทําให้การใช้งานหลายแอปพลิเคชันของคุณ

แหล่งข้อมูล

ISV ต้องการข้อมูลประจําตัวอื่นสําหรับแหล่งข้อมูลเดียวกัน

แหล่งข้อมูลสามารถมีชุดข้อมูลประจําตัวเดียวสําหรับผู้ใช้หลักหนึ่งราย ถ้าคุณจําเป็นต้องใช้ข้อมูลประจําตัวอื่น ให้สร้างผู้ใช้หลักเพิ่มเติม จากนั้นกําหนดข้อมูลประจําตัวที่แตกต่างกันให้กับบริบทของผู้ใช้หลักแต่ละคน แล้วฝังโดยใช้โทเค็น Microsoft Entra ของผู้ใช้รายนั้น

แก้ไขปัญหาแอปพลิเคชันแบบฝังตัวของคุณด้วยวัตถุ IError

ใช้วัตถุ IError ที่ส่งกลับโดยเหตุการณ์ข้อผิดพลาดจาก JavaScript SDK เพื่อดีบักแอปพลิเคชันของคุณ และทําความเข้าใจสาเหตุของข้อผิดพลาดของคุณได้ดียิ่งขึ้น

หลังจากการรับวัตถุ IError คุณควรดูที่ตารางข้อผิดพลาดทั่วไปที่เหมาะสมกับชนิดฝังตัวที่คุณกําลังใช้ เปรียบเทียบคุณสมบัติ IError กับคุณสมบัติในตารางและค้นหาเหตุผลสําหรับความล้มเหลวที่เป็นไปได้

ข้อผิดพลาดทั่วไปเมื่อมีการฝังสําหรับผู้ใช้ Power BI

ข้อความ ข้อความรายละเอียด รหัสข้อผิดพลาด เหตุผลที่เป็นไปได้
TokenExpired โทเค็นการเข้าถึงหมดอายุให้ส่งอีกครั้งด้วยโทเค็นการเข้าถึงใหม่ 403 โทเค็นหมดอายุแล้ว
PowerBIEntityNotFound การรับรายงานล้มเหลว 404
  • รหัสรายงานไม่ถูกต้อง
  • ไม่มีรายงาน
  • พารามิเตอร์ไม่ถูกต้อง ไม่ได้ระบุพารามิเตอร์ powerbiToken ไม่มี
  • ไม่มีโทเค็นการเข้าถึงให้
  • ไม่มีรหัสรายงานให้
  • LoadReportFailed การเตรียมใช้งานล้มเหลว - ไม่สามารถแก้ไขคลัสเตอร์ได้ 403
  • โทเค็นการเข้าถึงไม่ดี
  • ชนิดที่ฝังไม่ตรงกับชนิดโทเค็น
  • PowerBINotAuthorizedException การรับรายงานล้มเหลว 401
  • รหัสกลุ่มไม่ถูกต้อง
  • กลุ่มที่ไม่ได้รับอนุญาต
  • TokenExpired โทเค็นการเข้าถึงหมดอายุ ให้ส่งอีกครั้งด้วยโทเค็นการเข้าถึงใหม่ ไม่สามารถแสดงชื่อเรื่องภาพรายงานได้: ชื่อเรื่องภาพ ไม่มี
  • ข้อมูลคิวรี
  • โทเค็นหมดอายุแล้ว
  • OpenConnectionError ไม่สามารถแสดงวิชวลได้ ไม่สามารถแสดงชื่อเรื่องภาพรายงานได้: ชื่อเรื่องภาพ ไม่มี หยุดกําลังการผลิตชั่วคราวหรือลบในขณะที่รายงานที่เกี่ยวข้องกับความจุถูกเปิดในเซสชัน
    ExplorationContainer_FailedToLoadModel_DefaultDetails ไม่สามารถโหลด Schema สําหรับแบบจําลองที่เกี่ยวข้องกับรายงานนี้ ตรวจสอบให้แน่ใจว่าคุณมีการเชื่อมต่อไปยังเซิร์ฟเวอร์ แล้วลองอีกครั้ง ไม่มี
  • หยุดกําลังการผลิตชั่วคราว
  • ลบกําลังการผลิตแล้ว
  • ข้อผิดพลาดทั่วไปเมื่อมีการฝังสําหรับผู้ใช้ที่ไม่ใช่ Power BI (โดยใช้โทเค็นที่ฝัง)

    ข้อความ ข้อความรายละเอียด รหัสข้อผิดพลาด เหตุผลที่เป็นไปได้
    TokenExpired โทเค็นการเข้าถึงหมดอายุให้ส่งอีกครั้งด้วยโทเค็นการเข้าถึงใหม่ 403 โทเค็นหมดอายุแล้ว
    LoadReportFailed การรับรายงานล้มเหลว 404
  • รหัสรายงานไม่ถูกต้อง
  • ไม่มีรายงาน
  • LoadReportFailed การรับรายงานล้มเหลว 403 รหัสรายงานไม่ตรงกับโทเค็น
    LoadReportFailed การรับรายงานล้มเหลว 500 รหัสที่ระบุในรายงานไม่ใช่ GUID
    พารามิเตอร์ไม่ถูกต้อง ไม่ได้ระบุพารามิเตอร์ powerbiToken ไม่มี
  • ไม่มีโทเค็นการเข้าถึงให้
  • ไม่มีรหัสรายงานให้
  • LoadReportFailed การเตรียมใช้งานล้มเหลว - ไม่สามารถแก้ไขคลัสเตอร์ได้ 403 ชนิดโทเค็นไม่ถูกต้องหรือโทเค็นไม่ตรงกัน
    PowerBINotAuthorizedException การรับรายงานล้มเหลว 401 รหัสกลุ่มไม่ถูกต้อง/ไม่ได้รับอนุญาต
    TokenExpired โทเค็นการเข้าถึงหมดอายุ ให้ส่งอีกครั้งด้วยโทเค็นการเข้าถึงใหม่ ไม่สามารถแสดงชื่อเรื่องภาพรายงานได้: ชื่อเรื่องภาพ ไม่มี
  • ข้อมูลคิวรี
  • โทเค็นหมดอายุแล้ว
  • OpenConnectionError ไม่สามารถแสดงวิชวลได้ ไม่สามารถแสดงชื่อเรื่องภาพรายงานได้: ชื่อเรื่องภาพ ไม่มี หยุดกําลังการผลิตชั่วคราวหรือลบในขณะที่รายงานที่เกี่ยวข้องกับความจุถูกเปิดในเซสชัน
    ExplorationContainer_FailedToLoadModel_DefaultDetails ไม่สามารถโหลด Schema สําหรับแบบจําลองที่เกี่ยวข้องกับรายงานนี้ ตรวจสอบให้แน่ใจว่าคุณมีการเชื่อมต่อไปยังเซิร์ฟเวอร์ แล้วลองอีกครั้ง ไม่มี
  • หยุดกําลังการผลิตชั่วคราว
  • ลบกําลังการผลิตแล้ว
  • รับรายงานล้มเหลว - ข้อผิดพลาด 401 - แก้ไขปัญหาด้วยตนเอง

    ใน ผู้ใช้เป็นเจ้าของข้อมูล สถานการณ์ บางครั้งผู้ใช้จะได้รับข้อผิดพลาด 401 ที่แก้ไขตัวเองหลังจากที่พวกเขาเข้าถึงพอร์ทัล Power BI เมื่อเกิดข้อผิดพลาด 401 ให้เพิ่ม สิทธิ์ RefreshUser เรียกใช้ในแอปตามที่อธิบายไว้ใน อัปเดตสิทธิ์ผู้ใช้

    แบบจําลองความหมาย

    จัดการว่าผู้ใช้ของคุณสามารถดูส่วนใดของข้อมูลที่ผู้ใช้ของคุณสามารถดูได้

    ผู้ใช้ใดๆ ที่มีสิทธิ์ในการอ่านสําหรับแบบจําลองเชิงความหมายสามารถดู Schema ทั้งหมด (ตาราง คอลัมน์ และหน่วยวัด) และข้อมูลทั้งหมดได้ คุณไม่สามารถควบคุมการดูสิทธิ์ในการดูดิบและรวมข้อมูลที่แยกต่างหากในแบบจําลองความหมายเดียวกัน

    หากต้องการจัดการข้อมูลส่วนที่ผู้ใช้ของคุณสามารถดู ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้:

    การแสดงเนื้อหา

    หากต้องการแก้ไขปัญหาการแสดงผลในรายการ Power BI แบบฝังตัว (เช่น รายงานและแดชบอร์ด) ให้ตรวจสอบส่วนนี้

    ตรวจสอบว่ารายการ Power BI โหลดในบริการ Power BI

    เมื่อต้องการไม่รวมปัญหากับแอปพลิเคชันของคุณ หรือ API ที่ฝังให้ตรวจสอบว่าสามารถดูรายการได้ในบริการของ Power BI (powerbi.com)

    ตรวจสอบว่ารายการ Power BI โหลดใน playground การวิเคราะห์แบบฝังตัวของ Power BI

    เมื่อต้องการแก้ไขปัญหาเกี่ยวกับแอปพลิเคชันของคุณ ให้ตรวจสอบว่ารายการ Power BI สามารถดูได้ใน playground การวิเคราะห์แบบฝังตัวของ

    ตรวจสอบว่าโทเค็นการเข้าถึงของคุณไม่หมดอายุ

    เพื่อวัตถุประสงค์ด้านความปลอดภัย โทเค็นการเข้าถึง (โทเค็น Microsoft Entra หรือโทเค็นแบบฝังตัว) มีอายุการใช้งานที่จํากัด คุณควรตรวจสอบโทเค็นการเข้าถึงของคุณอย่างต่อเนื่องและรีเฟรชหากจําเป็น สําหรับข้อมูลเพิ่มเติม ให้ดู รีเฟรชโทเค็นการเข้าถึง

    การแสดง

    เพื่อให้ได้เนื้อหาแบบฝังตัวที่มีประสิทธิภาพดีที่สุด เราขอแนะนําให้คุณทําตามแนวทางปฏิบัติที่ดีที่สุดสําหรับการวิเคราะห์แบบฝังตัวของ Power BI

    คําถามที่ถามบ่อยที่ถามบ่อยเกี่ยวกับ Power BI

    มีคําถามเพิ่มเติมหรือไม่ ถาม ชุมชน Power BI