Dynamics CRM 365 - 无效的用户授权传递给平台的用户身份验证无效

Mas*_*200 11 microsoft-dynamics authorization crm dynamics-crm dynamics-crm-365

每当我点击机会来定制它

设置 - 自定义 - 机会

窗口波纹管打开

无效的用户授权传递给平台的用户身份验证无效.

看来自定义窗口正在尝试打开一个活动窗口,它应该打开一个机会图表窗口.显示的唯一错误是"无效的用户授权传递给平台的用户身份验证无效",并且调试窗口中没有错误.

注意:

  • 机会图表是唯一有这个问题的图表.如果我尝试自定义公司图表,则不会出现问题.
  • 从XRMToolbox发布图表有效.只有在自定义窗口中才会出现问题.
  • 在我的网站的生产版本中,问题不会发生.
  • 我已按照此处的建议尝试清除浏览器缓存.

---更新1 ---

回应@ConorGallagher

是机会图表还是特定图表?

这是所有机会图表.他们中没有人会打开.

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

我有,开发人员工具不会发现任何错误.

定制页面: 自定义调试 图表页面: 图表调试

或者使用fiddler做分析并找出究竟是什么失败?

当我点击图表时,这就是我从小提琴手那里得到的:

提琴手调试

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

两者之间的加密设置相同.

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

开发组织是在现场升级之前正在进行的生产的副本.

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

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

---更新2 ---

回应@ConorGallagher

我在开发人员工具的网络选项卡上预计会出现401(或某些http错误).您可以仔细检查该标签只是为了看.

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

网络选项卡

回应@Pawel Gradecki

1)您不应该检查开发人员工具是否有脚本错误,将选项卡切换到"网络"并检查那里的任何HTTP错误.

请参阅上面的snapshoot到我网络窗口的@ConorGallagher ^.

你也没有在fiddler上启用HTTPS解密,所以你的日志不是很有意义,你应该首先启用它,然后重新检查fiddler

我在这里道歉是启用了解密的小提琴输出: Fiddler输出解密1 Fiddler输出解密2 这更有帮助.页面似乎无法找到源地图(404),然后重定向到错误页面(302).我不确定它是否重定向,因为它无法找到源地图或因为其他一些错误.

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

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

4)您可以打开一些工作图表设计器(例如帐户)并复制完整的URL并将其粘贴到单独的窗口.对机会图表执行相同操作(将其复制并粘贴到单独的窗口).如果仍然没有为Opportunity工作比较两个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

公司图表

现在,如果我将网址更改为:

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

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

无效的用户身份验证

记得仔细检查服务器Trace,因为它可以告诉你一些有意义的东西.如果你有什么东西,请把它贴在这里,这样我们也可以看一下.

见上面链接^.

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

这将是最后的手段.

Mas*_*200 4

经过一周的恳求和向编程之神(又名微软支持)献上燔祭后,我们终于能够找出问题所在。

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

为了解决这个问题,我们检查了每个视图并删除了对我们来说是 new_opportunitytype 的麻烦字段。然后,我们使用下面的查询来扫描 CRM 数据库中是否存在 new_opportunitytype,并且必须通过编辑 SystemFormBase 表中的 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
Run Code Online (Sandbox Code Playgroud)