首页 文章

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

提问于
浏览
11

每当我点击机会来定制它

Settings - Customization - Opportunity

窗口波纹管打开

Invalid User Authorization The user authentication passed to the platform is not valid.

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

注意:

  • 机会图表是唯一有这个问题的图表 . 如果我尝试自定义公司图表,则不会出现问题 .

  • 从XRMToolbox发布图表有效 . 只有在自定义窗口中才会出现问题 .

  • 在我的网站的 生产环境 版本中,问题不会发生 .

  • 我已尝试按照建议here清除浏览器缓存 .

---更新1 ---

回应@ConorGallagher

Is it any of the opportunity charts or just particular ones?

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

Have you tried opening up developer tools and checking network to see what exactly is failing?

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

自定义页面:
Customization debug
图表页面:
Chart debug

Or using fiddler do analyse it and find out what exactly is failing?

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

Fiddler debug

Are there any encryption settings that differ between production and dev?

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

Is the dev organization a database copy of production or a new install?

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

Does it happen when you're logged directly onto the server and try customizing charts?

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

---更新2 ---

回应@ConorGallagher

I'd have expected a 401 (or some http error) someplace on the network tab in developer tools. Can you double check that tab just to see.

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

Network tab

回应@Pawel Gradecki

1) You should not check Developer Tools for script errors, switch the tab to "Network" and check for any HTTP errors there.

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

Also you did not enable HTTPS decryption on fiddler, so your log is not very meaningful, you should enable this first and then recheck fiddler

我在这里道歉是启用了解密的小提琴输出:
Fiddler output with decryption 1

Fiddler output with decryption 2
这更有帮助 . 页面似乎无法找到源 Map (404),然后重定向到错误页面(302) . 我找不到源 Map 或因为其他一些错误 .

2) Check server Trace logs, they can show some additional info that can be used for troubleshooting

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

4) Can you open some working chart designer (for example for account) and copy the full URL and paste it to a separate window. Do the same with Opportunity chart (copy and paste it to separate window). If it's still not working for Opportunity compare both URLs, try to play with them a little (exchange some query string parameters).

我玩了网址

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

Companies chart

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

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是Company对象,3是机会对象) . 我仍然被重定向到无效的用户页面 .

Invalid user auth

Remember to check very carefully server Trace, because it can tell you something meaningful. If you will have something there, paste it here so we can also have a look at it.

见上面链接^ .

One more idea that came into my mind - try to backup your organization database, restore it under different name, import it under different name (so you should have a separate organization on DEV). Sometimes there are errors during organization import that do not stop the import itself, but cause some strange behaviour of the CRM. Check if this re-imported organization has the same problem.

这将是最后的手段 .

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
    

相关问题