แก้ไขปัญหาแอปพลิเคชันแบบฝังตัวของคุณ
บทความนี้อธิบายถึงปัญหาทั่วไปบางอย่างที่อาจเกิดขึ้นเมื่อมีการฝังเนื้อหาจาก Power BI
เครื่องมือการแก้ไขปัญหา
ติดตาม Fiddler
Fiddler เป็นเครื่องมือฟรีจาก Telerik ที่ตรวจสอบปริมาณการใช้งาน HTTP คุณสามารถดูปริมาณการใช้งานได้ด้วย Power BI API จากเครื่องของลูกค้า เครื่องมือนี้อาจแสดงข้อผิดพลาดและข้อมูลอื่น ๆ ที่เกี่ยวข้อง
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 ของคุณและคัดลอกจากภาพรวม
ID ออบเจ็กต์ขององค์ประกอบหลัก
ID ออบเจ็กต์หลักหรือที่เรียกว่า ID ออบเจ็กต์ คือ ID ที่ไม่ซ้ํากันของออบเจ็กต์ บริการหลัก ที่เชื่อมโยงกับแอปพลิเคชัน Microsoft Entra ของคุณ
หากต้องการรับ ID ออบเจ็กต์หลักของคุณ ให้นําทางไปยังแอป Microsoft Entra ของคุณและจาก ภาพรวมให้เลือกลิงก์แอปใน แอปพลิเคชันที่มีการจัดการ ในไดเรกทอรีภายใน
จากส่วน คุณสมบัติ ให้คัดลอก ID ออบเจ็กต์ของ
ตรวจ สอบ
การรับรองความถูกต้องล้มเหลวโดยมี AADSTS70002 หรือ AADSTS50053
(AADSTS70002: ข้อมูลประจําตัวผิดพลาด AADSTS50053: คุณได้พยายามลงชื่อเข้าใช้หลายครั้งเกินไปด้วยรหัสผู้ใช้หรือรหัสผ่านที่ไม่ถูกต้อง)
ถ้าคุณกําลังใช้ Power BI Embedded และการรับรองความถูกต้องโดยตรงของ Microsoft Entra คุณอาจได้รับข้อความเหมือนข้อความก่อนหน้าเมื่อคุณพยายามลงชื่อเข้าใช้ เนื่องจากไม่ได้เปิดใช้งานการรับรองความถูกต้องโดยตรง
คุณสามารถเปิดการรับรองความถูกต้องโดยตรงอีกครั้งโดยใช้นโยบาย Microsoft Entra ที่กําหนดขอบเขตสําหรับองค์กร หรือ บริการหลัก
เราขอแนะนําให้คุณเปิดใช้งานนโยบายนี้ในแต่ละแอปเท่านั้น
เมื่อต้องสร้างนโยบายนี้ คุณจําเป็นต้องเป็น ผู้ดูแลระบบส่วนกลางของ สําหรับไดเรกทอรีที่คุณกําลังสร้างนโยบายและกําหนดนโยบายนั้น นี่คือสคริปต์ตัวอย่างสําหรับการสร้างนโยบาย และกําหนดนโยบายให้กับ SP สําหรับแอปพลิเคชันนี้:
ติดตั้ง Microsoft Graph PowerShell SDK
เรียกใช้คําสั่ง 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 นําทางไปยัง Microsoft Entra ID>ผู้ใช้และกลุ่ม>การตั้งค่าผู้ใช้
- เปิดใช้งาน ผู้ใช้สามารถยินยอมให้แอปเข้าถึงข้อมูลของบริษัทในนามของพวกเขา การตั้งค่า และบันทึกการเปลี่ยนแปลงได้
- ผู้ดูแลระบบสามารถให้สิทธิ์กับแอปพลิเคชัน สําหรับผู้เช่าทั้งหมดหรือผู้ใช้ที่ระบุ
ข้อผิดพลาด 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 การรักษาความปลอดภัยระดับแถว (RLS)
แยกข้อมูลออกเป็นแบบจําลองความหมายต่าง ๆ ตัวอย่างเช่น คุณสามารถสร้างแบบจําลองความหมายที่ประกอบด้วยข้อมูลรวมเท่านั้น และให้ผู้ใช้ของคุณเข้าถึงเฉพาะแบบจําลองความหมายดังกล่าว
การแสดงเนื้อหา
หากต้องการแก้ไขปัญหาการแสดงผลในรายการ 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