使用基于声明的身份验证时,与 Dynamics CRM Organization.svc 通信的 .NET Web 应用程序受到限制

.NET Web Application communicating with Dynamics CRM Organization.svc is throttled when using Claims-Based Authentication

我们在 IIS 8.5 (.NET 4.6.1) 上有一个供应商提供的 .NET Web 应用程序 运行。它通过 WCF Organization.svc.

与 Microsoft Dynamics CRM 2016(内部部署)通信

由于我一直在进行负载测试,瓶颈似乎出现在 Web 服务器(以后称为 "WFE")和 CRM 服务器(托管 WCF Organization.svc)之间。 CPU/memory/disk 在两台服务器上均未显示任何问题。当我增加负载时,响应时间变差并且 CPU/memory/disk 使用率保持不变。

如果我查看 IIS - WFE 上的工作进程,我发现我对 Web 应用程序的请求在负载下排队,等待时间长达 40-50 秒,同时在 CRM 服务器 - IIS - 工作进程上,那里排队的请求只等到 1-2 秒。

因此,在它到达 CRM 进行处理之前似乎需要等待很长时间。 我试过的配置设置:

None 这些单独的更改会产生任何明显的差异。服务器上的响应时间和资源使用情况保持不变,因此它们似乎什么也没做。

但如果我在 CRM "Deployment Manager" 中禁用 "Claims-based authentication",所有响应时间都会显着缩短(快 10 倍)。

我使用了 Fiddler 并且可以看到 Web 应用程序只对 ADFS 进行一次身份验证,因此它不会一遍又一遍地重新进行身份验证。 CRM 也已将 "authPersistNonNTLM" 设置为 True。 CRM 服务器上的 Fiddler 显示它从未与 ADFS 通信。

Web 应用程序正在使用 8.0 版的 CRM SDK,并且专门使用 OrganizationServiceProxy class。

感谢 help/insight 进一步解决此问题。

原来这是一个已知的 Microsoft CRM 问题: https://www.cobalt.net/2015/01/28/claims-authentication-performance-overhead-in-dynamics-crm/ 好吧!