Dynamics CRM 365 - Invalid User Authorization 传递给平台的用户身份验证无效

Dynamics CRM 365 - Invalid User Authorization The user authentication passed to the platform is not valid

每当我点击机会进行自定义时

window 波纹管打开

似乎自定义 window 正在尝试打开一个 activity window,它应该打开一个机会图表 window。显示的唯一错误是 "Invalid User Authorization The user authentication passed to the platform is not valid" 并且调试中没有错误 window.

注:

---更新 1---

回应@ConorGallagher

它是任何机会图表还是特定的图表?

这是所有机会图表。 NONE 个将打开。

您是否尝试打开开发人员工具并检查网络以查看到底是什么失败了?

我有并且开发者工具没有显示任何错误。

自定义页面: 图表页面:

或者使用 fiddler 分析它并找出到底是什么失败了?

这是我单击图表时从 fiddler 获得的全部内容:

生产和开发之间是否存在任何不同的加密设置?

两者的加密设置相同。

开发组织是生产的数据库副本还是新安装的?

开发组织是就地升级之前工作的产品的副本。

当您直接登录到服务器并尝试自定义图表时会发生这种情况吗?

它发生在 PC 上,直接发生在服务器上。

---更新2---

回应@ConorGallagher

我本以为会在开发人员工具的网络选项卡上出现 401(或一些 http 错误)。你能仔细检查一下那个标签吗?

我也会,但网络选项卡中的所有内容都是 200。除了第一个是 302。请参阅下面的 fiddler 输出。

回应@Pawel Gradecki

1) 您不应检查开发人员工具中的脚本错误,将选项卡切换到 "Network" 并检查那里是否存在任何 HTTP 错误。

请参阅上面我网络的@ConorGallagher 的快照 window ^.

另外你没有在fiddler上开启HTTPS解密,所以你的日志意义不大,你应该先开启再检查fiddler

我很抱歉这里是启用解密的提琴手输出: 这更有帮助。该页面似乎无法找到源映射 (404),然后重定向到错误页面 (302)。我不确定它是因为找不到源地图还是因为其他错误而重定向。

2) 检查服务器跟踪日志,它们可以显示一些可用于故障排除的附加信息

https://raw.githubusercontent.com/MasterProgrammer200/Whosebug/master/crm/log-opportunity-user-auth.txt

4) 你能打开一些工作图表设计器(例如帐户)并复制完整的 URL 并将其粘贴到单独的 window 中吗?对机会图表执行相同操作(将其复制并粘贴到单独的 window)。如果它仍然不适用于 Opportunity 比较两个 URLs,尝试使用它们一点(交换一些查询字符串参数)。

我玩过 url

https://crmcanada-dev.url.com/main.aspx?appSolutionId=%7bFD140AAF-4DF4-11DD-BD17-0019B9312238%7d&extraqs=etc%3d1%26id%3d%7bA3A9EE47-5093-DE11-97D4-00155DA3B01E%7d&pagetype=vizdesigner#665349499

现在,如果我将 url 更改为:

https://crmcanada-dev.url.com/main.aspx?appSolutionId=%7bFD140AAF-4DF4-11DD-BD17-0019B9312238%7d&extraqs=etc%3d3%26id%3d%7bA3A9EE47-5093-DE11-97D4-00155DA3B01E%7d&pagetype=vizdesigner#665349499

(因为 1 是公司对象,3 是机会对象)。我仍然被重定向到无效的用户页面。

记得非常仔细地检查服务器Trace,因为它可以告诉你一些有意义的事情。如果你在那里有什么东西,把它粘贴在这里,这样我们也可以看看。

见上link^.

我想到了另一个想法 - 尝试备份您的组织数据库,以不同的名称恢复它,以不同的名称导入它(因此您应该在 DEV 上有一个单独的组织)。有时在组织导入过程中会出现错误,这些错误不会停止导入本身,但会导致 CRM 出现一些奇怪的行为。检查这个重新导入的组织是否有同样的问题

这是最后的手段。

在向编程之神(又名 Microsoft 支持)恳求和献祭一周之后,我们终于弄清楚了问题所在。

问题是,在从 CRM 2016 升级到 CRM 365 之前,我们删除了一个托管解决方案,但由于某种原因,视图中的一个字段没有随之而来。当我们升级到 365 时,未删除的字段导致错误。经过调查,我们在视图创建器中的问题字段旁边的圆圈中发现了一个感叹号。

为了解决这个问题,我们检查了每个视图并删除了对我们来说很麻烦的字段 new_opportunitytype。然后我们使用下面的查询扫描 CRM 数据库中出现的 new_opportunitytype 并且不得不通过编辑 SystemFormBase table

中的 xml 将其从表单中删除

简而言之,隐藏你的孩子,隐藏你的妻子,检查你的观点,但最重要的是微软需要更好的错误处理。

来自 Microsoft 支持的有用查询:

/*This query searches the entire CRM database for the specified string*/

declare @TableName char(256)
declare @ColumnName char(256)
declare @FindString char(256)
declare @sql char(8000)

/*Replace X with character(s) you which to find and Y with its replacement*/
set @FindString = '[enter a guid or string or something]' 

/*select o.name, c.name from syscolumns c inner join sysobjects o
     on o.id = c.id
     where o.xtype = 'U'*/

declare T_cursor cursor for
     select o.name, c.name from sysobjects o inner join syscolumns c
           on o.id = c.id
           where o.xtype = 'U' and c.xtype in (175,239,99,231,35,167)

open T_cursor
fetch next from T_cursor into @TableName, @ColumnName
while (@@fetch_status <> -1)
     begin

     set @sql = 'if exists (select * from ' + rtrim(@TableName) + ' where ' + rtrim(@ColumnName) + ' like ''%' + rtrim(@FindString) + '%'')
           begin
           print ''Table = ' + rtrim(@TableName) + '      Column = ' + rtrim(@ColumnName) + '''
           end'

     exec(@sql)

     fetch next from T_cursor into @TableName, @ColumnName 

     end

close T_cursor

deallocate T_cursor