11

每当我点击一个机会来定制它

设置 - 自定义 - 机会

下面的窗口打开

Invalid User Authorization 传递给平台的用户认证无效。

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

笔记:

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

---更新1---

回应@ConorGallagher

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

这是所有机会图表。他们都不会打开。

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

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

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

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

这是我单击图表时从提琴手那里得到的全部信息:

提琴手调试

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

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

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

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

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

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

---更新2---

回应@ConorGallagher

我预计开发人员工具的网络选项卡上的某个地方会出现 401(或一些 http 错误)。您可以仔细检查该选项卡以查看。

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

网络选项卡

回应@Pawel Gradecki

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

请参阅上面对我的网络窗口的@ConorGallagher 的快照^。

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

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

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&pagetype=vizdesigner#665349499

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

用户身份验证无效

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

见上面的链接^。

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

这将是最后的手段。

4

1 回答 1

3

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

问题是,在从 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
于 2017-04-05T20:17:34.273 回答