今天我们接着上一次的来说, 如果没有看过上一节说的, 感兴趣的朋友可以看看:?Dynamics CRM: 关于用户权限的故障排除_Stone-hdj的博客-CSDN博客
上一节我们说的权限问题, 基本上在报错的页面都会有一个下载日志文件的按钮,让你可以下载并且查看到底是哪个实体的哪个权限出了问题, 但有的时候这个按钮是没有,就像下图这样,我们就可能无从下手.
Access Is Denied
You do not have enough privileges to access the Microsoft Dynamics 365 object or perform the requested operation. For more information, contact your Microsoft Dynamics 365 administrator.
我遇到这个问题是在我们的UCI界面嵌入的Audit History页面出现的, 像这样
下面我就来说说,对于这样情况如何找出来缺少的权限:
- 按F12打开浏览器的开发模式, 使用选择元素工具选择上图的IFrame, 找到里面的链接
????????2. 找到这个链接后, 我们使用一个新的tab页打开这个链接, 应该会看到相同的错误, 记住一定要用当前已经登陆过crm系统的这个浏览器打开
? ? ? ? ?3.?复制上面地址栏的全部内容
?这段代码是被url encode过的, 我们只需要找一个可以decode url网站把他解密即可,解密出来后, 我们会看到里面有Error Details这样标出的详细信息:
Error Details: SecLib::AccessCheckEx2 failed. Returned hr = -2147187962, ObjectId: f525099f-7d0f-eb11-8319-c8f5386a38c9, OwnerId: 00000000-0000-0000-0000-000000000000, OwnerIdType: 8 and CallingUser: b976d7c2-b43b-eb11-9957-00155d802f03, CallerBusinessId: 1960ccd4-36cb-ea11-830d-e9679634eda4. ObjectTypeCode: 9, ObjectBusinessUnitId: 8e42666b-36cb-ea11-830d-e9679634eda4, AccessRights: ReadAccess. Computed rightsToCheck=ReadAccess, grantedRights=8, hsmGrantedRights=None, grantedRightsWithHsm=8. RequestUri=/userdefined/areas.aspx?formid=c90430d6-02ca-465f-83a9-7eee7eb274d1&inlineEdit=1&navItemName=Audit%20History&oId=%7bEA0465D9-6459-EC11-9965-00155D803126%7d&oType=112&pagemode=iframe&rof=true&security=852023&tabSet=areaAudit&theme=Outlook15White user_lcid=1033
? ? ? ? 4. 其实我们只需要找到里面的两个信息就可, 一个是ObjectTypeCode, 这个是标识实体的, 另一个是AccessRights, 这个是标识缺少的权限
那实体的ObjectTypeCode我们怎么知道呢, 这里我们需要记住系统自带的实体是小于等于10000的, 所有自定义的实体的ObjectTypeCode都是大于10000的, 所以ObjectTypeCode=9我们上网可以查到是team实体, 那么我上面报的错, 它缺的权限就是team这个实体的读权限
Note:
对于ObjectTypeCode大于10000的自定义实体我们就没办法在网上查到了, 我们可以使用下面的方法:
- XrmToolbox里有一个叫Metadata Browser的这个工具来查找
- 如果是OP版本可以直接在数据库中使用SQL语句来查
SELECT * From EntityView
ORDER BY ObjectTypeCode
参考文档:
CRM Object Type Codes – CRM, SSIS & Integrations (tpein.dk)
Dynamics CRM2013 ScLib::AccessCheckEx failed_Vic的博客-CSDN博客
|